performance - 如何测量进程之间的干扰

标签 performance computer-science performance-testing measurement perf

在并行系统中,每个进程都会对其他进程产生影响,因为它们都会争夺一些稀缺资源,例如 CPU 缓存、内存、磁盘 I/O、网络等。

什么方法最适合测量进程之间的干扰?例如进程 A 和 B 都大量访问磁盘。因此,并行运行它们可能会比顺序运行(单独运行时)慢。因为瓶颈是硬盘。

如果我不确切知道进程的行为(磁盘、内存或 CPU 密集型),什么方法最适合对其进行分析?

测量单个运行时间并比较每个并行进程的相对份额?

就像进程 A 平均单独运行 30 秒,与 B 100% 并行时 45 秒,20% 并行时 35 秒..等等??

比较 L1 和 LLC 缓存未命中、页面错误等多个指标是否会更好?

最佳答案

您需要做的是首先确定每个程序的限制因素。如果您想同时运行 CPU 密集型和 IO 密集型,那么影响很小。如果您想同时运行两个 IO 密集型进程,就会出现很多争用。

我写了一个相当详细的答案,关于如何解释“时间[命令]”结果的输出,以了解限制因素是什么。在这里:What caused my elapsed time much longer than user time?

一旦您获得了对程序进行“计时”的输出,您就可以确定哪些程序可能相互冲突,哪些不会。

关于performance - 如何测量进程之间的干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930276/

相关文章:

sql - mysql - 创建行与列性能

functional-programming - 对于定点组合器 Y,\x.f(xx) 是什么

sorting - 归并排序——递归树

c++ - 测量 CPU 频率缩放效果

testing - 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

java - IntelliJ 15 CE 的最佳 JVM 设置

php - 加速一个(缓慢的)巨大的 wordpress 数据库

css - 长 CSS 类名对性能有影响吗?

jmeter - 如何理解jmeter中的Graph结果?