我覺得這個必須有一個簡單的答案,但我真的不知道如何解決這個問題。如何從子進程獲取統計信息以衡量資源利用率?
爲背景,對事物的堆棧是這樣的:
Python script -> C++ binary -(fork)-> actual thing we want to measure.
從本質上講,我們必須通過使用TMP目錄和這個網絡軟件棧我們」的多個實例運行模擬的環境中的python腳本重新開發。該腳本調用一個主機二進制文件(這裏不重要),然後在它加載之後,一個輔助二進制文件。助手二進制文件可以傳遞一個參數以守護進程,當它執行此操作時,它會以通常的方式分叉。
我們需要做的是衡量守護進程的CPU利用率,但我真的不知道該怎麼做。我所做的是定期讀取stat文件,但由於進程守護進程,我不能使用echo $!
來獲得它的PID。使用ps aux | grep 'thing'
工作正常,但我認爲這是給我的父進程,因爲統計信息是這樣的:
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時鐘滴答。這就是讓我得出這樣的結論的過程:這個過程實際上是父母過程,而不是那個正在做所有工作的分岔孩子。
我可以修改幾乎任何必要的文件,但由於代碼審查的限制,設計規格等,我必須更改許多文件越少越好。
1. PID1(INIT)成爲所有孤兒的父。 2.「wait3()」和「wait4()」允許獲得關於孩子的統計信息(如果你對孩子完成運行後的信息感興趣)。 –