0

我正在对各种 Linux 发行版进行分析。我想在以下场景中测量 Linux 发行版的性能

1)CPU利用率高

2) 内存利用率高

3)高IO利用率

4)高CPU IO等待

我想编写 C 程序来实现每个场景,以便我可以单独或组合运行这些程序来衡量性能。我编写了一些示例 c 程序来加载 CPU,但我需要 c 程序来处理其他情况。任何编程帮助将不胜感激。

4

1 回答 1

0

我正在对各种 Linux 发行版进行分析。

除非您对所做的事情非常小心,否则您不太可能以有意义的方式发现内核版本和发行版之间的细微性能差异。从运行程序的层面来看,发行版之间几乎没有区别,除了它们使用的 Linux 内核版本。

2) 内存利用率高

您的程序需要 malloc() 一堆内存 - 然后写入它。默认情况下,某些 Linux 发行版会过度使用内存。只需调用 malloc() 来创建一个数组并写入每个元素就足够了。

3)高IO利用率

考虑使用fio而不是在这里编写自己的代码。如果您确实需要编写自己的代码,那么您需要决定几件事:

  1. 随机还是顺序 IO?SSD 的重要性不那么重要,但在磁驱动器上,这两种情况的性能特征非常不同。
  2. 读还是写?不同的存储子系统在读取和写入方面的表现可能非常不同。
  3. 直接 IO 还是缓冲 IO?您是想强调整个端到端 IO 子系统,还是仅仅强调底层存储。O_DIRECT 和 O_SYNC 等标志大大改变了内核处理 IO 的方式。
  4. 文件系统IO还是块IO?您是否有兴趣通过创建和删除文件来测试文件系统的性能,或者只是对块文件执行 IO?

您可以在这里编写的最简单的代码只是使用 open() 创建一个大文件,然后使用 rand() 以及 pread() 和 pwrite() 在该文件中执行随机块 IO。如果你想测试文件系统,你需要调用 open() 和 unlink() 很多次。

IO 基准测试是一个非常微妙的话题,这就是为什么我会鼓励你坚持使用像fio这样易于理解的工具。

4)高CPU IO等待

将 IO 加载器与 CPU 加载器结合起来会导致高 IO 等待。如果您对任何 IO 子系统施加压力,您将等待 IO。

于 2013-05-26T13:47:42.920 回答