Windowsには、システムのアイドル時間、カーネルコードの実行に費やされた時間、およびユーザーモードコードの実行に費やされた時間を返すGetSystemTimes()という関数があります。
Linuxに同等の機能はありますか?
Windowsには、システムのアイドル時間、カーネルコードの実行に費やされた時間、およびユーザーモードコードの実行に費やされた時間を返すGetSystemTimes()という関数があります。
Linuxに同等の機能はありますか?
元の回答は、現在実行中のプロセスのユーザーとシステム時間を取得するための解決策を提供しました。ただし、システム全体に関する情報が必要です。私の知る限り、この情報を取得する唯一の方法は、の内容を解析することです/proc/stat
。特に、ラベルが付けられた最初の行cpu
:
cpu 85806677 11713309 6660413 3490353007 6236822 300919 807875 0
cpu
SMP システムを実行している場合、この後に要約ごとが続きます。行自体には、次の情報が (順番に) 含まれています。
時間は の単位で報告されますUSER_HZ
。
カーネルのバージョンによっては、この後に他の列がある場合があります。
元の答え:
あなたがしたいtimes(2)
:
times()
現在の処理時間を に格納struct tms
しbuf
ます。は、次のstruct tms
ように定義されてい<sys/times.h>
ます。
struct tms {
clock_t tms_utime; /* user time */
clock_t tms_stime; /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};
アイドル時間は、壁時計の経過時間を追跡し、通話から報告された非アイドル時間を差し引くことで推測できます。