3

Windowsには、システムのアイドル時間、カーネルコードの実行に費やされた時間、およびユーザーモードコードの実行に費やされた時間を返すGetSystemTimes()という関数があります。

Linuxに同等の機能はありますか?

4

1 に答える 1

3

元の回答は、現在実行中のプロセスのユーザーとシステム時間を取得するための解決策を提供しました。ただし、システム全体に関する情報が必要です。私の知る限り、この情報を取得する唯一の方法は、の内容を解析することです/proc/stat。特に、ラベルが付けられた最初の行cpu

cpu  85806677 11713309 6660413 3490353007 6236822 300919 807875 0

cpuSMP システムを実行している場合、この後に要約ごとが続きます。行自体には、次の情報が (順番に) 含まれています。

  • ユーザーモードの時間
  • 優先度の低いユーザーモードの時間
  • システムモードの時間
  • アイドル時間
  • I/O が完了するまでの待機時間
  • タイムサービス割り込み
  • タイム サービス ソフトウェア割り込み
  • 仮想化に費やす時間

時間は の単位で報告されますUSER_HZ

カーネルのバージョンによっては、この後に他の列がある場合があります。

元の答え:


あなたがしたいtimes(2)

times() 現在の処理時間を に格納struct tmsbufます。は、次の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 */
   };

アイドル時間は、壁時計の経過時間を追跡し、通話から報告された非アイドル時間を差し引くことで推測できます。

于 2013-02-28T20:46:04.417 に答える