スポンサーリンク

GETRUSAGE(2) FreeBSD システムコールマニュアル GETRUSAGE(2)

名称

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

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

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

戻り値

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

エラー

getrusage() システムコールは次の場合に処理を失敗します:

       [EINVAL]

who 引数が有効な値ではありません。

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

関連項目

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

バグ

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

歴史

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

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク