我们观察到Linux(ubuntu)和Windows之间的java算法的性能差异非常显着。该算法在JADE多代理系统上运行。在系统中,每个代理都有自己的进程。代理执行计算密集型操作并相互通信。性能的差异是3x-4x,有利于Windows。测试机器是i3770四核(8个逻辑核心)。我们已经检查过java 7和8,32位和64位版本。在Linux下,所有核心都具有相同的负载:大约50%用于用户空间,50%用于内核。在Windows下,80%用于用户模式,20%用于内核。
最近,我们使用“chrt”命令将Linux性能提高了一倍:“chrt -f 99 java ...”,它为java进程启用了FIFO_SCHED调度。
我们怀疑Linux不必要地在任务之间切换太多次了。
有没有办法在Linux上提高java性能以匹配Windows性能?