.\" Copyright (c) 1985, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)getrusage.2 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/sys/getrusage.2,v 1.20 2004/08/06 14:49:11 roam Exp % .\" .\" $FreeBSD$ .Dd June 4, 1993 .Dt GETRUSAGE 2 .Os .Sh 名称 .Nm getrusage .Nd リソース利用についての情報を得る .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/time.h .In sys/resource.h .Fd "#define RUSAGE_SELF 0" .Fd "#define RUSAGE_CHILDREN -1" .Ft int .Fn getrusage "int who" "struct rusage *rusage" .Sh 解説 .Fn getrusage システムコールは、現在のプロセス、またはそのプロセスが生成して、終了済みである すべての子プロセスが使用したリソースを詳しく説明する情報を返します。 .Fa who 引数は .Dv RUSAGE_SELF または .Dv RUSAGE_CHILDREN のどちらかです。 .Fa rusage が指すバッファには次の構造体が入れられます。 .Bd -literal 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; /* 非自発的なコンテキストスイッチ */ }; .Ed .Pp フィールドは次のように解釈されます: .Bl -tag -width ru_minfltaa .It Fa ru_utime ユーザモードで処理を実行するのに費やした時間の合計。 .It Fa ru_stime (1 つ以上の) プロセスのためにシステムが処理を実行するのに 消費した時間の合計。 .It Fa ru_maxrss 使用された常駐セットサイズの最大値 (キロバイト単位)。 .It Fa ru_ixrss 他のプロセスとの間でも共有されていたテキストセグメント によって使用されたメモリ量の .Dq 合計 値。 この値は「キロバイト * 実行のチック数」の単位で表現されます。 チックは統計用のクロックチックです。 統計用クロックの周波数は .Fn sysconf _SC_CLK_TCK チック / 秒です。 .It Fa ru_idrss プロセスのデータセグメントに常駐している非共有メモリ量の合計値 (「キロバイト * 実行のチック数」の単位で表現されます)。 .It Fa ru_isrss プロセスのスタックセグメントに常駐している非共有メモリ量の合計値 (「キロバイト * 実行のチック数」の単位で表現されます)。 .It Fa ru_minflt 入出力アクティビティなしにサービスを受けたページフォルトの数。 ここで、入出力アクティビティは、再割り当てを待っているページの リストからページフレームを .Dq 再生 することで回避されます。 .It Fa ru_majflt 入出力アクティビティを必要としたサービスを受けたページフォルトの数。 .It Fa ru_nswap プロセスがメインメモリから .Dq スワップ された回数。 .It Fa ru_inblock ファイルシステムが入力を実行する必要があった回数。 .It Fa ru_oublock ファイルシステムが出力を実行する必要があった回数。 .It Fa ru_msgsnd 送信された IPC メッセージの数。 .It Fa ru_msgrcv 受信した IPC メッセージの数。 .It Fa ru_nsignals 配信されたシグナルの数。 .It Fa ru_nvcsw タイムスライスが完了する前に、プロセスが自発的にプロセッサを 放棄した結果として発生したコンテキストスイッチの回数 (通常はリソースの取得待ちをするためです)。 .It Fa ru_nivcsw より高い優先順位プロセスが実行可能になったために、 または現在のプロセスがそのタイムスライスを超過したために、 結果として発生したコンテキストスイッチの回数。 .El .Sh 注 .Fa ru_inblock と .Fa ru_oublock の値は実際の入出力だけについてのものです。 キャッシュメカニズムによって提供されるデータは、データを読取りまたは 書込みを行う最初のプロセスについてのみカウントされます。 .Sh 戻り値 .Rv -std getrusage .Sh エラー .Fn getrusage システムコールは次の場合に処理を失敗します: .Bl -tag -width Er .It Bq Er EINVAL .Fa who 引数が有効な値ではありません。 .It Bq Er EFAULT .Fa rusage 引数によって指定されるアドレスは、プロセスアドレス空間の 有効な部分内にありません。 .El .Sh 関連項目 .Xr gettimeofday 2 , .Xr wait 2 , .Xr clocks 7 .Sh バグ まだ終了していない子プロセスに関する情報を得る方法はありません。 .Sh 歴史 .Fn getrusage システムコールは .Bx 4.2 で登場しました。