![当我的机器的性能发生变化时,如何测量应用程序的加速?](https://linux22.com/image/1390413/%E5%BD%93%E6%88%91%E7%9A%84%E6%9C%BA%E5%99%A8%E7%9A%84%E6%80%A7%E8%83%BD%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E6%B5%8B%E9%87%8F%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%8A%A0%E9%80%9F%EF%BC%9F.png)
我开发了一个运行在 Linux 上的单片程序,它占用大量内存。我们在大多数大内存机器上调整这个程序的速度时遇到了麻烦,因为性能不稳定,每次运行之间的差异高达 15%。例如,一台机器有 2TB 内存和 80 个 Xeon E7-4870 (2.4Ghz) 处理器。我们如何确定这种变化的来源和/或提高测量的准确性,以便我们能够确定哪些加速有效以及加速多少?它运行的是 SUSE11。
到目前为止,我们尝试过以下方法:1) 在 BIOS 中禁用 TurboBoost。2) 多次运行该程序并取平均值。这种方法有效,但需要数周时间才能消除噪音。
答案1
如果没有更具体的细节,回答起来会有点困难:应用程序的类型(I/O、计算密集型、网络应用程序)、正在运行的附加进程等等。
但我会提出一些一般性的建议:
-) 使用轮廓尝试了解系统(和特定应用程序)大多数时间处于什么位置。此工具非常非常强大,即使对于复杂的应用程序,它的输出推断起来有点费劲。
-) 使用iostat、iotop、pidstat、vmstat等工具尝试分析I/O部分或者内存消耗/分页等方面是否存在瓶颈。