linux - Linux 上应用程序的环境性能参数

标签 linux performance cpu-usage

我有两台“相同”的物理 Linux RedHat 服务器。我在他们两个上运行了一个小程序。我的问题:我的程序的 CPU 使用率在两台服务器之间有所不同。我不是 Linux 专家。我想知道是什么导致了这种性能差异?

我用 C++ 和 Java 编写程序,看看不一致是否来自所选的编程语言。程序本身会随着时间的推移进行一些整数计算,以消耗恒定数量的 CPU 时间。两个程序版本具有相同的 CPU 使用百分比差异。

我已经想到可以排除的环境变量:

  • 相同的服务器类型
  • 相同的处理器(都有两个插槽,单核)
  • 都启用了 Intel 超线程技术
  • 相同的时钟速度
  • 相同的操作系统版本(Red Hat Enterprise Linux Server 5.9 版)
  • 相同的 Java 版本、Java RE、JVM
  • Intel Demand based Switching 可以忽略,因为测量工具对 CPU 容量使用时钟速度的默认值
  • 我认为也可以排除处理器关联。我运行了多个测量系列,并且总是检索到完全相同的 CPU 使用率值。

是否有 C 库或类似的东西对 C++ 和 Java 程序的 CPU 使用率有影响,需要与实际操作系统版本分开更新?还是可以有不同的线程调度程序?

最佳答案

即使对于“相同”的系统,也有很多不同之处。不同的编译器被用来构建各种库,以及不同版本的编译器。例如,英特尔编译器的优化能力在一代又一代的不断提升。由于气流差异导致一台机器比另一台机器运行更热,导致频率偶尔下降,因此可能会出现其他差异。还有许多其他问题会导致相同的系统以不同的方式运行。

这是我的建议:创建操作系统镜像并为两个系统使用相同的镜像。断开两者与任何网络的连接。运行计算绑定(bind)(你是)。将您的应用程序绑定(bind)到某个核心。确认导出空气温度完全在规范范围内。禁用任何 Turbo 功能。如果仍然存在差异,请检查内存速度。

此外,使用更复杂的分析和分析工具,例如 Intel Vtune。您可以深入研究实际周期、测量缓存未命中、分支预测错误等。它们也应该相同。如果不是,分析应该可以让您了解问题出在哪里。

关于linux - Linux 上应用程序的环境性能参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871097/

相关文章:

javascript - 膨胀一个javascript文件以使其更大

php - 使用 Composer 安装 MSSQL

linux - Linux 和 Mac OS X 中的 .o 文件

c# - 一直调用属性或将值赋给变量并使用它

c++ - 使用 "this"指针和不使用它有区别吗?

node.js - Chrome Headless puppeteer 占用太多 CPU

Java代码速度提升

tomcat - 以编程方式检查任何进程(如 tomcat)的 CPU 使用率

linux - 通过域名访问网站(linux)

linux - 尽管安装了调试信息,但 GDB 未显示行号信息