1 .\" Copyright (c) 1992 Drew Eckhardt, March 28, 1992
2 .\" and Copyright (c) 2002 Michael Kerrisk
4 .\" %%%LICENSE_START(VERBATIM)
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date. The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein. The author(s) may not
18 .\" have taken the same level of care in the production of this manual,
19 .\" which is licensed free of charge, as they might when working
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
26 .\" 2004-11-16 -- mtk: the getrlimit.2 page, which formerly included
27 .\" coverage of getrusage(2), has been split, so that the latter is
28 .\" now covered in its own getrusage.2. For older details of change
29 .\" history, etc., see getrlimit.2
31 .\" Modified 2004-11-16, mtk, Noted that the nonconformance
32 .\" when SIGCHLD is being ignored is fixed in 2.6.9.
33 .\" 2008-02-22, Sripathi Kodi <sripathik@in.ibm.com>: Document RUSAGE_THREAD
34 .\" 2008-05-25, mtk, clarify RUSAGE_CHILDREN + other clean-ups.
35 .\" 2010-05-24, Mark Hills <mark@pogo.org.uk>: Description of fields,
36 .\" document ru_maxrss
37 .\" 2010-05-24, mtk, enhanced description of various fields
39 .\"*******************************************************************
41 .\" This file was generated with po4a. Translate the source file.
43 .\"*******************************************************************
45 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
46 .\" all rights reserved.
47 .\" Translated 1997-02-22, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
48 .\" Updated and Modified 2001-06-02, Yuichi SATO <ysato444@yahoo.co.jp>
49 .\" Updated and Modified 2001-08-18, Yuichi SATO
50 .\" Updated and Modified 2002-08-25, Yuichi SATO
51 .\" Updated and Modified 2004-01-17, Yuichi SATO
52 .\" Updated and Modified 2004-12-30, Yuichi SATO
53 .\" Updated and Modified 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
54 .\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.11
55 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
57 .TH GETRUSAGE 2 2014\-05\-10 Linux "Linux Programmer's Manual"
59 getrusage \- 資源の使用量を取得する
61 \fB#include <sys/time.h>\fP
63 \fB#include <sys/resource.h>\fP
65 \fBint getrusage(int \fP\fIwho\fP\fB, struct rusage *\fP\fIusage\fP\fB);\fP
68 \fBgetrusage\fP() は \fIwho\fP の資源 (resource) の使用量を返す。 \fIwho\fP には以下のいずれか一つを指定できる。
71 呼び出したプロセスの資源使用量、 そのプロセス内の全スレッドが使用している資源の合計を返す。
74 呼び出したプロセスの子プロセスのうち、 終了して待ち状態にある全プロセスが使用している資源使用量の統計を返す。
75 これらの統計情報には、孫プロセスやその子孫のプロセスのうち、 削除待ちのものが使用している資源も含まれる。
77 \fBRUSAGE_THREAD\fP (Linux 2.6.26 以降)
78 呼び出したスレッドに関する資源使用量の統計を返す。 \fI<sys/resource.h>\fP からこの定数の定義を得るためには、
79 ((\fIどの\fPヘッダーファイルをインクルードするよりも前に) 機能検査マクロ \fB_GNU_SOURCE\fP を定義しなければならない。
81 資源使用量は \fIusage\fP が指す構造体に格納されて返される。 構造体は以下の形式である。
86 struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */
87 struct timeval ru_stime; /* 使用されたシステム CPU 時間 */
88 long ru_maxrss; /* RAM 上に存在する仮想ページのサイズ
89 (resident set size) の最大値 */
90 long ru_ixrss; /* 共有メモリーの合計サイズ */
91 long ru_idrss; /* 非共有データの合計サイズ */
92 long ru_isrss; /* 非共有スタックの合計サイズ */
93 long ru_minflt; /* ページの再利用 (ソフトページフォルト) */
94 long ru_majflt; /* ページフォールト (ハードページフォルト) */
95 long ru_nswap; /* スワップ */
96 long ru_inblock; /* ブロック入力操作 */
97 long ru_oublock; /* ブロック出力操作 */
98 long ru_msgsnd; /* 送信された IPC メッセージ */
99 long ru_msgrcv; /* 受信された IPC メッセージ */
100 long ru_nsignals; /* 受信されたシグナル */
101 long ru_nvcsw; /* 意図したコンテキスト切り替え */
102 long ru_nivcsw; /* 意図しないコンテキスト切り替え */
107 すべてのフィールドがサポートされているわけではない。 メンテナンスされていないフィールドには、 カーネルが 0 を設定する
108 (メンテナンスされていないフィールドは、 他のシステムとの互換性のために提供されており、 いつか Linux でもサポートされるかもしれない)。
112 ユーザーモードでの実行で消費された合計時間。 \fItimeval\fP 構造体 (秒とミリ秒) で表現される。
115 カーネルモードでの実行で消費された合計時間。 \fItimeval\fP 構造体 (秒とミリ秒) で表現される。
117 \fIru_maxrss\fP (Linux 2.6.32 以降)
118 使用された resident set size の最大値 (キロバイト単位)。 \fBRUSAGE_CHILDREN\fP の場合には、プロセスツリーの
119 resident set size の最大値ではなく、 最も大きい子プロセスの resident set size となる。
121 \fIru_ixrss\fP (メンテナンスされていない)
123 .\" this is the integral of the text segment memory consumption,
124 .\" expressed in kilobyte-seconds.
125 このフィールドは現在のところ Linux では未使用である。
127 \fIru_idrss\fP (メンテナンスされていない)
128 .\" On some systems, this is the integral of the data segment memory consumption,
129 .\" expressed in kilobyte-seconds.
130 このフィールドは現在のところ Linux では未使用である。
132 \fIru_isrss\fP (メンテナンスされていない)
133 .\" On some systems, this is the integral of the stack memory consumption,
134 .\" expressed in kilobyte-seconds.
135 このフィールドは現在のところ Linux では未使用である。
138 I/O 動作なしで発生したページフォルトの回数。 再割り当てを待っているページリストからページフレームを「回収」 (reclaim) することで、
142 I/O 動作を必要とするページフォルトの回数。
144 \fIru_nswap\fP (メンテナンスされていない)
145 .\" On some systems, this is the number of swaps out of physical memory.
146 このフィールドは現在のところ Linux では未使用である。
148 \fIru_inblock\fP (Linux 2.6.22 以降)
149 ファイルシステムが入力を実行する必要があった回数。
151 \fIru_oublock\fP (Linux 2.6.22 以降)
152 ファイルシステムが出力を実行する必要があった回数。
154 \fIru_msgsnd\fP (メンテナンスされていない)
155 .\" On FreeBSD 6.2, this appears to measure messages sent over sockets
157 .\" this field records the number of messages sent over sockets.
158 このフィールドは現在のところ Linux では未使用である。
160 \fIru_msgrcv\fP (メンテナンスされていない)
161 .\" On FreeBSD 6.2, this appears to measure messages received over sockets
163 .\" this field records the number of messages received over sockets.
164 このフィールドは現在のところ Linux では未使用である。
166 \fIru_nsignals\fP (メンテナンスされていない)
167 .\" On some systems, this field records the number of signals received.
168 このフィールドは現在のところ Linux では未使用である。
170 \fIru_nvcsw\fP (Linux 2.6 以降)
171 自分のタイムスライスが完了する前にプロセスが自発的にプロセッサを解放して行われたコンテキストスイッチの回数
172 (通常はリソースが利用可能になるのを待つために行われる)。
174 \fImemory_migrate\fP (Linux 2.6.16 以降)
175 優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタイムスライスを超過したことにより行われたコンテキストスイッチの回数。
178 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
182 \fIusage\fP がアクセス可能なアドレス空間の外を指している。
187 SVr4, 4.3BSD. POSIX.1\-2001 は \fBgetrusage\fP() を規定しているが、規定しているフィールドは
188 \fIru_utime\fP と \fIru_stime\fP だけである。
190 \fBRUSAGE_THREAD\fP は Linux 固有である。
192 \fBexecve\fP(2) の前後でリソース使用量の指標は保持される。
194 今日では \fI<sys/time.h>\fP をインクルードする必要はないが、 インクルードしておけば移植性が増す。 (実際
195 \fIstruct timeval\fP は \fI<sys/time.h>\fP で定義されている。)
197 .\" See the description of getrusage() in XSH.
198 .\" A similar statement was also in SUSv2.
199 2.6.9 より前のバージョンの Linux カーネルでは、 \fBSIGCHLD\fP の処理が \fBSIG_IGN\fP に設定されていると、
200 子プロセスのリソース使用量が \fBRUSAGE_CHILDREN\fP で返される値に自動的に含められる。 しかし POSIX.1\-2001
201 では、これを明確に禁止している。 この準拠していなかった点は、Linux 2.6.9 以降で改正された。
203 このページの最初で示した構造体の定義は 4.3BSD Reno のものである。
205 古いシステムでは、 \fBgetrusage\fP() と同様の目的を持つ関数 \fBvtimes\fP() が提供
206 されていた。後方互換性のため、glibc でも \fBvtimes\fP() を提供している。
207 全ての新しいアプリケーションでは \fBgetrusage\fP() を使用すべきである。
209 \fBproc\fP(5) にある \fI/proc/PID/stat\fP の説明も参照のこと。
211 \fBclock_gettime\fP(2), \fBgetrlimit\fP(2), \fBtimes\fP(2), \fBwait\fP(2), \fBwait4\fP(2),
214 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
215 である。プロジェクトの説明とバグ報告に関する情報は
216 http://www.kernel.org/doc/man\-pages/ に書かれている。