getrusage

Section: System Calls (2)
Updated: 2026-02-08
Index JM Home Page roff page
 

名前

getrusage - 資源の使用量を取得する  

ライブラリ

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

書式

#include <sys/resource.h>

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

説明

getrusage() は who の資源 (resource) の使用量を返す。 who には以下のいずれか一つを指定できる。
RUSAGE_SELF
呼び出したプロセスの資源使用量、 そのプロセス内の全スレッドが使用している資源の合計を返す。
RUSAGE_CHILDREN
呼び出したプロセスの子プロセスのうち、 終了して待ち状態にある全プロセスが使用している資源使用量の統計を返す。 これらの統計情報には、孫プロセスやその子孫のプロセスのうち、 削除待ちのものが使用している資源も含まれる。
RUSAGE_THREAD (Linux 2.6.26 以降)
呼び出したスレッドに関する資源使用量の統計を返す。 <sys/resource.h> からこの定数の定義を得るためには、 ((どのヘッダーファイルをインクルードするよりも前に) 機能検査マクロ _GNU_SOURCE を定義しなければならない。

資源使用量は usage が指す構造体に格納されて返される。 構造体は以下の形式である。

struct rusage {
    struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */
    struct timeval ru_stime; /* 使用されたシステム CPU 時間 */
    long   ru_maxrss;        /* RAM 上に存在する仮想ページのサイズ
                               (resident set size) の最大値 */
    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;        /* 送信された IPC メッセージ */
    long   ru_msgrcv;        /* 受信された IPC メッセージ */
    long   ru_nsignals;      /* 受信されたシグナル */
    long   ru_nvcsw;         /* 意図したコンテキスト切り替え */
    long   ru_nivcsw;        /* 意図しないコンテキスト切り替え */
};

すべてのフィールドがサポートされているわけではない。 メンテナンスされていないフィールドには、 カーネルが 0 を設定する (メンテナンスされていないフィールドは、 他のシステムとの互換性のために提供されており、 いつか Linux でもサポートされるかもしれない)。 各フィールドの詳細は以下の通りである。

ru_utime
ユーザーモードでの実行で消費された合計時間。 timeval 構造体 (秒とミリ秒) で表現される。
ru_stime
カーネルモードでの実行で消費された合計時間。 timeval 構造体 (秒とミリ秒) で表現される。
ru_maxrss (Linux 2.6.32 以降)
This is the maximum resident set size used (in KiB). For RUSAGE_CHILDREN, this is the resident set size of the largest child, not the maximum resident set size of the process tree.
ru_ixrss (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_idrss (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_isrss (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_minflt
The number of page faults serviced without any I/O activity; here, I/O activity is avoided by ``reclaiming'' a page frame from the list of pages awaiting reallocation.
ru_majflt
I/O 動作を必要とするページフォルトの回数。
ru_nswap (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_inblock (Linux 2.6.22 以降)
ファイルシステムが入力を実行する必要があった回数。
ru_oublock (Linux 2.6.22 以降)
ファイルシステムが出力を実行する必要があった回数。
ru_msgsnd (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_msgrcv (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_nsignals (メンテナンスされていない)
このフィールドは現在のところ Linux では未使用である。
ru_nvcsw (Linux 2.6 以降)
自分のタイムスライスが完了する前にプロセスが自発的にプロセッサを解放して行われたコンテキストスイッチの回数 (通常はリソースが利用可能になるのを待つために行われる)。
ru_nivcsw (Linux 2.6 以降)
優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタイムスライスを超過したことにより行われたコンテキストスイッチの回数。
 

返り値

On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.  

エラー

EFAULT
usage がアクセス可能なアドレス空間の外を指している。
EINVAL
who が無効である。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース属性値
getrusage() Thread safetyMT-Safe
 

標準規格

POSIX.1-2024.

POSIX.1 は getrusage() を規定しているが、規定しているフィールドは ru_utime と ru_stime だけである。

RUSAGE_THREAD は Linux 固有である。  

歴史

4.3BSD, SVr4, SUSv1, POSIX.1-2001 XSI.

Before Linux 2.6.9, if the disposition of SIGCHLD is set to SIG_IGN then the resource usages of child processes are automatically included in the value returned by RUSAGE_CHILDREN, although POSIX.1-2001 explicitly prohibits this. This nonconformance is rectified in Linux 2.6.9 and later.

このページの最初で示した構造体の定義は 4.3BSD Reno のものである。

Ancient systems provided a vtimes() function with a similar purpose to getrusage(). For backward compatibility, glibc (up until Linux 2.32) also provides vtimes(). All new applications should be written using getrusage(). (Since Linux 2.33, glibc no longer provides an vtimes() implementation.)  

注意

execve(2) の前後でリソース使用量の指標は保持される。  

関連項目

clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3), proc_pid_stat(5), proc_pid_io(5)


 

Index

名前
ライブラリ
書式
説明
返り値
エラー
属性
標準規格
歴史
注意
関連項目

This document was created by man2html, using the manual pages.