EN JA
GETRUSAGE(2)
GETRUSAGE(2) FreeBSD System Calls Manual GETRUSAGE(2)

名称

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

ライブラリ

Standard C Library (libc, -lc)

書式

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

#define RUSAGE_SELF 0
#define RUSAGE_CHILDREN -1
#define RUSAGE_THREAD 1

int
getrusage( int who, struct rusage *rusage);

解説

getrusage() システムコールは、現在のスレッド、現在のプロセス、または終了されたすべて子プロセスによって利用されたリソースについて説明する情報を返します。 who 引数は、 RUSAGE_THREAD, 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 引数によって指定されるアドレスは、プロセスアドレス空間の有効な部分内にありません。

歴史

getrusage() システムコールは、 4.2BSD で登場しました。 RUSAGE_THREAD 機能は、 FreeBSD 8.1 ではじめて登場しました。

バグ

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