tail head cat sleep
QR code linking to this page

manページ  — GETRUSAGE

名称

getrusage – リソース利用についての情報を得る

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>

#define Ta RUSAGE_SELF      0
#define Ta RUSAGE_CHILDREN      -1
int
getrusage(int who, struct rusage *rusage);

解説

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
  より高い優先順位プロセスが実行可能になったために、 または現在のプロセスがそのタイムスライスを超過したために、 結果として発生したコンテキストスイッチの回数。

ru_inblockru_oublock の値は実際の入出力だけについてのものです。 キャッシュメカニズムによって提供されるデータは、データを読取りまたは 書込みを行う最初のプロセスについてのみカウントされます。

戻り値

The getrusage function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

getrusage() システムコールは次の場合に処理を失敗します:
[EINVAL]
  who 引数が有効な値ではありません。
[EFAULT]
  rusage 引数によって指定されるアドレスは、プロセスアドレス空間の 有効な部分内にありません。

関連項目

gettimeofday(2), wait(2), clocks(7)

バグ

まだ終了していない子プロセスに関する情報を得る方法はありません。

歴史

getrusage() システムコールは BSD 4.2 で登場しました。

GETRUSAGE (2) June 4, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

The Unix phenomenon is scary. It doesn't go away.
— Steve Ballmer