我正在編寫C代碼(在Linux上),它在運行時需要消耗一定數量的CPU。我正在進行一個實驗,在達到某個CPU閾值時觸發某些操作。所以,一旦使用率達到一定的門檻,我需要保持在該狀態30秒,直到我完成我的實驗。我正在使用top命令監視CPU利用率。增加CPU利用率並使用C代碼將其保持在一定水平
所以我的問題是 - 1.我如何增加CPU利用率到一個給定的值(如果可能,以確定性的方式)? 2.一旦達到閾值,是否有辦法在預定義的時間內保持該水平?頂部命令的
樣本輸出(第9列是由 '頂部' 進程所使用的CPU) - 19304 ABCDE 16 0 5448 1212 808 - [R 0.2 0.0 0:00.06頂部
與上述類似,我會看在頂部顯示我的二進制文件的利用率的行。
任何幫助,將不勝感激。另外,讓我知道你是否需要更多細節。
謝謝!
編輯: 以下幾行代碼讓我可以很好地控制CPU利用率 - 在以下情況下,我有2個選項 - 保持50%以上並將其保持在50%以下 - 經過一些試驗和錯誤之後,我以給定的睡眠價值定下來。
endwait = clock() + (seconds * CLOCKS_PER_SEC);
while(clock() < endwait) {}
if (cpu_utilization > 50)
usleep(250000);
else
usleep(700000);
希望這有助於!
使用休眠和繁忙循環,睡眠,繁忙循環,睡眠,繁忙循環等等的組合來實現所需的任何cpu利用率。 – 2012-02-08 21:03:40
雖然繁忙的循環顯然會將報告的CPU利用率保持在最低限度,但您可能希望在該處引發一些未對齊的內存訪問以保持CPU繁忙。 – 2012-02-09 00:04:06