2016-12-16 47 views
0

任何人都可以指出我如何能夠以百分比的形式計算特定進程的CPU使用率?該代碼是一個內核模塊,所以我正在尋找一種更好的方式,而不是從/proc解析數據或使用系統調用。我想知道是否可以使用task_struct和linux內核函數的組合來計算它。以內核空間的百分比計算進程的CPU使用率

回答

0

task_struct中有用戶時間(UTIME),系統時間(STIME),START_TIME和...,這裏是https://stackoverflow.com/a/16736599/4490542

+0

算法最困難的是尋找確切的功能使用,爲了找到在/ proc目錄中找到的等效信息。特別是經過的時間和單位的轉換。這段[源代碼](http://lxr.free-electrons.com/source/kernel/tsacct.c#L29)幫了很多。但仍然存在一個問題。在爲了計算百分比而拋出長時間浮點數時,我得到錯誤:「錯誤:SSE寄存器返回,SSE禁用」 –

+1

@PedramEsmaeeli沒有直接的方式獲得進程的CPU負載,即使用戶空間應用程序使用這些參數來計算,見955行https://github.com/hishamhm/htop/blob/e0209da88faf3b390d71ff174065abd407abfdfd/ProcessList.c,但問題是內核空間中的浮點計算(你提到的錯誤),在內核中的浮點並不容易。看看內核的加密核心,那裏有軟件fpu –