[英]How to get stat information from a child process to measure resource utilization?
我覺得這肯定有一個簡單的答案,但我真的不知道該如何處理。
對於背景,一堆東西是這樣的:
Python script -> C++ binary -(fork)-> actual thing we want to measure.
本質上,我們有一個python腳本,它通過使用tmp目錄並運行我們正在開發的該網絡軟件堆棧的多個實例來模擬環境。 該腳本調用主機二進制文件(此處不重要),然后在加載后調用幫助程序二進制文件。 可以向輔助二進制文件傳遞參數以進行守護進程,並且在執行此操作時,它將以通常的方式進行派生。
我們需要做的是測量守護程序的CPU使用率,但是我真的不知道如何做。 我所做的是定期讀取stat文件,但是由於該進程是守護進程,因此無法使用echo $!
獲取其PID。 使用ps aux | grep 'thing'
ps aux | grep 'thing'
工作正常,但是我認為這給了我父進程,因為stat信息如下所示:
1472582561 9455 (nlsr) S 1 9455 9455 0 -1 4218944 394 0 0 0 13 0 0 0 20 0 2 0 909820 184770560 3851 18446744073709551615 4194304 5318592 140734694817376 140734694810512 140084250723843 0 0 16781312 0 0 0 0 17 0 0 0 0 0 0 7416544 7421528 16224256 140734694825496 140734694825524 140734694825524 140734694825962 0
我知道父進程不應為PID1,並且肯定 utime
字段及類似字段應大於13個時鍾滴答。 這就是使我得出的結論,即該過程實際上是父過程,而不是完成所有工作的分叉孩子。
我幾乎可以修改任何必要的文件,但是由於代碼審查約束,設計規范等原因,我對許多文件所做的更改越少越好。
可靠地獲取孩子的PID
fork()
將孩子的PID返回給父對象 從/proc/[PID]/stat
獲取CPU統計信息
#14
utime
用戶代碼中花費的CPU時間,以時鍾周期為單位
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.