簡體   English   中英

如何從子進程中獲取統計信息以衡量資源利用率?

[英]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個時鍾滴答。 這就是使我得出的結論,即該過程實際上是父過程,而不是完成所有工作的分叉孩子。

我幾乎可以修改任何必要的文件,但是由於代碼審查約束,設計規范等原因,我對許多文件所做的更改越少越好。

  1. 可靠地獲取孩子的PID

    • fork()將孩子的PID返回給父對象
  2. /proc/[PID]/stat獲取CPU統計信息

    • #14 utime用戶代碼中花費的CPU時間,以時鍾周期為單位

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM