首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux:加载CPU、内存和硬盘的示例程序

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

Stack Overflow用户
提问于 2013-05-26 21:15:55
回答 1查看 342关注 0票数 0

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

1)高CPU利用率

2)高内存利用率

3)高IO利用率

4)高CPU IO等待

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

EN

回答 1

Stack Overflow用户

发布于 2013-05-26 21:47:43

我正在对不同的Linux发行版进行分析。

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

2)高内存利用率

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

3)高IO利用率

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

  1. 是随机IO还是顺序IO?这对于SSD来说就不那么重要了,但是在磁盘驱动器上,这两种情况的characteristics.
  2. Reads或写入性能有很大的不同?对于读取和writes.
  3. Direct IO或缓冲IO,不同的存储子系统的性能可能会非常不同?您是要对整个端到端IO子系统施加压力,还是只对底层存储施加压力。像O_DIRECT和O_SYNC这样的标志极大地改变了内核处理IO的方式。
  4. 文件系统IO还是块IO?您是否有兴趣通过创建和删除文件或仅对数据块文件执行IO来测试文件系统的性能?

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

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

4)高CPU等待

将IO加载器与CPU加载器相结合应该会导致高IO等待。如果你对任何IO子系统施加压力,你会得到IO等待。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16759593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档