我的多線程應用程序(C++)使用pthreads。應用程序自動生成線程並按需重新使用線程,並允許線程在空閒時間過長時被取消。如何以編程方式從工作線程獲取父線程和同級線程的CPU利用率?
我已經放入了一個「特殊線程」來捕獲用於查看應用程序性能的統計數據,以適應不同的場景。
我不能等待進程退出,知道使用了多少CPU。
嘗試使用這起特殊的線程,但結果似乎並沒有PS &頂部的輸出相匹配:
struct rusage ru;
double utime, stime, ttime ;
if (getrusage(RUSAGE_SELF, &ru) == -1)
return;
utime = ru.ru_utime.tv_sec + (ru.ru_utime.tv_usec/1000000); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + (ru.ru_stime.tv_usec/1000000); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization
你不錯的黑客,能告訴我,如果有更好的方式來做到這一點,或上述是正確的方法,而我實際上錯過了別的東西?
在此先感謝。
你的代碼看起來很好。唯一的一點是'ru.ru_utime.tv_usec/1000000'及其雙胞胎是整數部分,而周圍的代碼表明浮點部分可能已經被打算。儘管如此,這並不能解釋測量時間中的任何不小的差異。 – NPE