VTIMES(3)

名称
vtimes - リソース利用についての情報を取得

書式
#include <sys/vtimes.h> vtimes(struct vtimes *par_vm, struct vtimes *ch_vm)

解説
このインタフェースは、getrusage(2) によって置き換えられました。 この関数は、互換性ライブラリ、libcompat から使用できます。

vtimes() 関数は、現在のプロセスおよび現在のプロセスの終了した 子プロセスのアカウント情報を返します。 par_vm または ch_vm のどちらか一方、またはこれら両方は 0 でも構いません。この場合には、 非ゼロであるポインタについての情報のみが返されます。

この関数を呼び出した後は、各バッファにはインクルードファイル /usr/include/sys/vtimes.h の内容によって定義された次のような情報が 入ります。

    struct vtimes {
    	int	vm_utime;	/* user time (*HZ) */
    	int	vm_stime;	/* system time (*HZ) */
    	/* divide next two by utime+stime to get averages */
    	unsigned vm_idsrss;	/* integral of d+s rss */
    	unsigned vm_ixrss;	/* integral of text rss */
    	int	vm_maxrss;	/* maximum rss */
    	int	vm_majflt;	/* major page faults */
    	int	vm_minflt;	/* minor page faults */
    	int	vm_nswap;	/* number of swaps */
    	int	vm_inblk;	/* block reads */
    	int	vm_oublk;	/* block writes */
    };

vm_utime および vm_stime のフィールドは、60 分の 1 秒 (ローカルの交流の周波数が 50 Hz の場合は 50 分の 1 秒) の単位でそれぞれユーザ時間と システム時間を示します。 vm_idrss および vm_ixrss は、メモリの使用度を測ります。それぞれ、 CPU 時間に対する使用メモリページの数を積分して 計算します。これらは、クロックが 1 回刻む度に 現在のメモリ使用(512 バイトページの単位で)を加算して、 離散的に計算したかのように示されます。ある プロセスがデータおよびスタックについて 1 cpu 秒に 5 コアページを使った場合は、 vm_idsrss は 5*60 の値を持ち、ここで vm_utime+vm_stime は 60 となります。 引数 Vm_idsrss はデータとスタックのセグメント使用度を積算し、 vm_ixrss はテキストセグメントの使用度を積算します。 Vm_maxrss 関数は、 テキスト+データ+スタックのコア駐在のページカウントの最大瞬間総和を 示します。

vm_majflt フィールドは、ディスク動作に結びついたページフォールトの数を 示します。 vm_minflt フィールドは、参照ビットのシミュレーションで引き起こされた ページフォールトの数を示します。 vm_nswap は、起こったスワップの数です。 ファイルシステムの入力/出力イベントの回数は、 vm_inblk および vm_oublk によって示されます。 これらの数字は、実際の I/O のみを数えます。 キャッシング機構によって供給されたデータは、そのデータを読み書きする最初の プロセスに対してのみ勘定されます。

参照
getrusage(2), wait3(2), time(3)

歴史
vlimit() 関数は、 4.2BSD に現れました。

バグ
この関数は、未だに再実装されていません。