2013-05-26 80 views
0

我正在做各種Linux發行版的執行分析。我要測量Linux發行版在以下情景Linux:加載CPU,內存和硬盤的示例程序

1)高的CPU利用率

2)高內存利用率

3)高IO利用率

4)高CPU IO等待性能

我想編寫C程序以實現每個場景,以便我可以單獨或組合地運行這些程序來衡量性能。 我寫了一些示例c程序來加載CPU,但我需要c程序來處理其他情況。 任何編程幫助將不勝感激。

回答

0

我正在做各種Linux發行版的執行分析。

除非你非常小心你正在做什麼,否則你不可能以有意義的方式發現內核版本和分發之間微妙的性能差異。從正在運行的程序級別來看,發行版之間幾乎沒有什麼區別,除了它們使用的Linux內核版本。

2)高內存利用率

你的程序需要的malloc()一堆記憶 - 然後寫入。一些Linux發行版默認爲overcommit memory。只需調用malloc()創建一個數組並寫入每個元素就足夠了。

3)高IO利用率

考慮使用fio,而不是在這裏寫你自己的代碼。如果您確實需要編寫自己的代碼,那麼您需要確定幾件事情:

  1. 隨機或順序IO?這對於固態硬盤來說並不重要,但在磁性驅動器上,這兩種情況下的性能特性有很大不同。
  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等待

與你的CPU代碼,就導致高IO等待你的組合IO裝載機。如果你強調任何IO子系統,你會得到IO等待。

相關問題