getrusage(2) FreeBSD 一般コマンドマニュアル

getrusage

前のページ 上に戻る 次のページ

getrusage




書式

     #include <sys/types.h>
     #include <sys/time.h>
     #include <sys/resource.h>
     #define   RUSAGE_SELF     0
     #define   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_CLOCK_TCK) チック / 秒です。

     ru_idrss     プロセスのデータセグメントに常駐している非共有メモリ量の合計

     ru_inblock   ファイルシステムが入力を実行する必要があった回数

     ru_oublock   ファイルシステムが出力を実行する必要があった回数

     ru_msgsnd    送信された IPC メッセージの数

     ru_msgrcv    受信した IPC メッセージの数

     ru_nsignals  配信されたシグナルの数

     ru_nvcsw     タイムスライスが完了する前に、プロセスが自発的にプロセッサを
                  放棄した結果として発生したコンテキストスイッチの回数 (通常は
                  リソースの取得待ちをするためです)。

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


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


戻り値

     関数 getrusage() は、処理が成功すると値 0 を返します。そうでない場合、値
     -1 が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     getrusage() 関数は次の場合に処理を失敗します。

     [EINVAL]           who パラメータが有効な値ではありません。

     [EFAULT]           rusage パラメータによって指定されるアドレスは、プロセ
                        スアドレス空間の有効な部分内にありません。


関連項目

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


バグ

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


歴史

     getrusage() 関数は 4.2BSD で登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス