getrusage()
システムコールは、現在のプロセス、またはそのプロセスが生成して、終了済みである
すべての子プロセスが使用したリソースを詳しく説明する情報を返します。
who
引数は
RUSAGE_SELF
または
RUSAGE_CHILDREN
のどちらかです。
rusage
が指すバッファには次の構造体が入れられます。
struct rusage {
struct timeval ru_utime; /* 使用されたユーザ時間 */
struct timeval ru_stime; /* 使用されたシステム時間 */
long ru_maxrss; /* 最大常駐セットのサイズ */
long ru_ixrss; /* 共有テキストメモリ総サイズ */
long ru_idrss; /* 非共有データ総サイズ */
long ru_isrss; /* 非共有スタック総サイズ */
long ru_minflt; /* ページ再生数 */
long ru_majflt; /* ページフォルト */
long ru_nswap; /* スワップ */
long ru_inblock; /* ブロック入力操作 */
long ru_oublock; /* ブロック出力操作 */
long ru_msgsnd; /* 送信済みメッセージ */
long ru_msgrcv; /* 受信済みメッセージ */
long ru_nsignals; /* 受信済みシグナル */
long ru_nvcsw; /* 自発的なコンテキストスイッチ */
long ru_nivcsw; /* 非自発的なコンテキストスイッチ */
};
フィールドは次のように解釈されます:
ru_utime
|
|
ユーザモードで処理を実行するのに費やした時間の合計。
|
ru_stime
|
|
(1 つ以上の) プロセスのためにシステムが処理を実行するのに
消費した時間の合計。
|
ru_maxrss
|
|
使用された常駐セットサイズの最大値 (キロバイト単位)。
|
ru_ixrss
|
|
他のプロセスとの間でも共有されていたテキストセグメント
によって使用されたメモリ量の
"合計"
値。
この値は「キロバイト * 実行のチック数」の単位で表現されます。
チックは統計用のクロックチックです。
統計用クロックの周波数は
sysconf(_SC_CLK_TCK)
チック / 秒です。
|
ru_idrss
|
|
プロセスのデータセグメントに常駐している非共有メモリ量の合計値
(「キロバイト * 実行のチック数」の単位で表現されます)。
|
ru_isrss
|
|
プロセスのスタックセグメントに常駐している非共有メモリ量の合計値
(「キロバイト * 実行のチック数」の単位で表現されます)。
|
ru_minflt
|
|
入出力アクティビティなしにサービスを受けたページフォルトの数。
ここで、入出力アクティビティは、再割り当てを待っているページの
リストからページフレームを
"再生"
することで回避されます。
|
ru_majflt
|
|
入出力アクティビティを必要としたサービスを受けたページフォルトの数。
|
ru_nswap
|
|
プロセスがメインメモリから
"スワップ"
された回数。
|
ru_inblock
|
|
ファイルシステムが入力を実行する必要があった回数。
|
ru_oublock
|
|
ファイルシステムが出力を実行する必要があった回数。
|
ru_msgsnd
|
|
送信された IPC メッセージの数。
|
ru_msgrcv
|
|
受信した IPC メッセージの数。
|
ru_nsignals
|
|
配信されたシグナルの数。
|
ru_nvcsw
|
|
タイムスライスが完了する前に、プロセスが自発的にプロセッサを
放棄した結果として発生したコンテキストスイッチの回数
(通常はリソースの取得待ちをするためです)。
|
ru_nivcsw
|
|
より高い優先順位プロセスが実行可能になったために、
または現在のプロセスがそのタイムスライスを超過したために、
結果として発生したコンテキストスイッチの回数。
|