Linux:加载CPU,内存和硬盘的示例程序

时间:2013-05-26 13:15:55

标签: linux memory cpu

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

1)CPU利用率高

2)高内存利用率

3)高IO利用率

4)高CPU IO等待

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

1 个答案:

答案 0 :(得分:0)

  

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

除非您非常小心自己在做什么,否则您不太可能以有意义的方式在内核版本和发行版之间找到微妙的性能差异。从刚刚运行的程序的级别来看,除了他们使用的Linux内核版本之外,发行版之间的差异相当小。

  

2)高内存利用率

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

  

3)高IO利用率

请考虑使用fio而不是在此处编写自己的代码。如果您确实需要编写自己的代码,那么您需要做出以下几点决定:

  1. 随机或顺序IO?对于SSD而言,它不那么重要,但在磁力驱动器上,这两种情况具有非常不同的性能特征。
  2. 读或写?不同的存储子系统在读取和写入方面的执行可能会有很大不同。
  3. 直接IO还是缓冲IO?您是否想要强调整个端到端IO子系统,或仅仅是底层存储。像O_DIRECT和O_SYNC这样的标志实质上改变了内核处理IO的方式。
  4. 文件系统IO或块IO?您是否有兴趣通过创建和删除文件来测试文件系统的性能,或者只是对块文件执行IO?
  5. 您可以在此处编写的最简单的代码只使用open()创建一个大文件,然后使用rand()和pread()以及pwrite()在该文件中执行随机块IO。如果你想测试文件系统,你需要多次调用open()和unlink()。

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

      

    4)高CPU IO等待

    将IO加载程序与CPU加载程序结合使用会导致IO等待率过高。如果您在强调任何IO子系统,那么您将获得IO等待。