Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我试图找出linux和windows上相同java代码的性能差异。从表面上看,linux下的性能要差得多_Java_Windows_Linux_Sockets - Fatal编程技术网

I';我试图找出linux和windows上相同java代码的性能差异。从表面上看,linux下的性能要差得多

I';我试图找出linux和windows上相同java代码的性能差异。从表面上看,linux下的性能要差得多,java,windows,linux,sockets,Java,Windows,Linux,Sockets,我意识到这个问题相当普遍,我正在寻找关于如何协调linux(RedHat 5)和Windows(2008 Server)上的性能差异的非常普遍的意见。我有一个java应用程序,它是一个由多个服务组成的集合,在同一个硬件上处理netflow数据包,在Linux和Windows上的性能似乎只有原来的一半。该应用程序涉及从套接字中提取数据包,并对它们执行一些非常简单的处理,并编写一个浓缩的输出文件,以便由不同的C++应用程序对其进行下游处理。p> 计划中相关的领域: 从插座上拔下数据包 数据库访问(m

我意识到这个问题相当普遍,我正在寻找关于如何协调linux(RedHat 5)和Windows(2008 Server)上的性能差异的非常普遍的意见。我有一个java应用程序,它是一个由多个服务组成的集合,在同一个硬件上处理netflow数据包,在Linux和Windows上的性能似乎只有原来的一半。该应用程序涉及从套接字中提取数据包,并对它们执行一些非常简单的处理,并编写一个浓缩的输出文件,以便由不同的C++应用程序对其进行下游处理。p> 计划中相关的领域: 从插座上拔下数据包 数据库访问(mysql 5.1.45) 大量文件i/o

就优化而言,我几乎没有什么linux经验,如果有人能指出一些与windows不同的linux优化时需要注意的事情,那就太好了

此外,我也不完全确定我还能提供哪些其他信息。我知道我没有提供太多有用的信息,如果有问题能给我指出正确的方向,我将不胜感激

有没有提供跨linux和windows的java性能基准测试的实用程序

如果这个问题没有意义,或者我提供的信息太少,甚至连一个有用的问题都提不出来,请随意批评我

谢谢

编辑: 所有的jvm设置都是相同的(对于所涉及的服务,我们在这两种情况下使用完全相同的包装器配置文件)

编辑: 我想暂时提出这个问题。除了运行一个基本的分析器和比较结果之外,我已经无法花费更多的时间来探索这个问题。linux和windows上的结果看起来几乎相同,只是在从NIC上提取数据包时有更大的延迟。我仍然不明白为什么会这样,或者这是否是与其他网络条件相关的异常。当我有时间再看一遍的时候,我会发布更多


谢谢大家的回答

建议:找到一个适合您的场景的分析工具,并在两种环境中运行它

例如,Eclipse TFTP:

附言:


阿菲关于NIO的建议很好。诚然,它回避了一个问题,即为什么会出现性能差异。但是,如果您还没有使用NIO,那么这两种环境都会受益。IMHO…

建议:找到一个适合您的场景的分析工具,并在两种环境中运行它

例如,Eclipse TFTP:

附言:


阿菲关于NIO的建议很好。诚然,它回避了一个问题,即为什么会出现性能差异。但是,如果您还没有使用NIO,那么这两种环境都会受益。从表面上看,对于相同的硬件,Linux并不比Windows慢。在指责操作系统(或操作系统上的Java)之前,我先看看其他方面:

  • 硬件是一样的吗?相同的处理器规格?相同的内存量?相同的光盘规格

  • 数据库有问题吗?Windows和Linux系统是否与同一个数据库实例通信?他们是用同样的方式说话的吗。如果数据库实例不同,它们的配置是否相同?他们已经调好了吗

这类问题的解决方案通常包括打开性能监视、概要分析等,并分析系统的行为,以确定瓶颈在哪里

在我看来,在花费(浪费)时间研究(例如)使用NIO将解决问题的理论之前,您需要弄清楚瓶颈真正在哪里


有没有提供跨linux和windows的java性能基准测试的实用程序


我不知道。

从表面上看,对于相同的硬件,Linux并不比Windows慢。在指责操作系统(或操作系统上的Java)之前,我先看看其他方面:

  • 硬件是一样的吗?相同的处理器规格?相同的内存量?相同的光盘规格

  • 数据库有问题吗?Windows和Linux系统是否与同一个数据库实例通信?他们是用同样的方式说话的吗。如果数据库实例不同,它们的配置是否相同?他们已经调好了吗

这类问题的解决方案通常包括打开性能监视、概要分析等,并分析系统的行为,以确定瓶颈在哪里

在我看来,在花费(浪费)时间研究(例如)使用NIO将解决问题的理论之前,您需要弄清楚瓶颈真正在哪里


有没有提供跨linux和windows的java性能基准测试的实用程序


我不知道。

其他一些可能影响性能的因素: -JVM-您使用的是同一个供应商的JVM吗?同一版本?都是64位还是32位? -内核问题:您是否正在运行自定义内核?是否为您的处理器正确编译? -Linux上的CLI性能工具(top、ntop、iostat、vmstat)告诉您什么?例如,如果iostat的IO等待时间很长,那么可能是驱动器配置的问题


有很多因素会影响Java性能。从简单开始,向后工作。在我看来,simple==内存页和IO性能等基本统计数据。如果我们谈论的是完全相同的代码,那么开始识别差异(很明显是操作系统,但还有什么?

其他一些可能影响性能的因素: -JVM-您使用的是同一个供应商的JVM吗?同一版本?都是64位还是32位? -内核问题:您是否正在运行自定义内核