[libc] getrusage
manをなんとなく眺めていたらgetrusage関数なるものがあった。 getrusageは、資源の使用量を測るための関数らしい. manにサンプルコードが載ってなかったので、とりあえずどんなものか調べるためのた、サンプルコードを作ってみた。
#include <sys/time.h> #include <sys/resource.h> int main() { struct rusage *usage; getrusage(RUSAGE_SELF, usage); /* RUSAGE_SELF か RUSAGE_CHILDRENかを指定する*/ printf("ru_maxrss = %d \n", usage->ru_maxrss); printf("ru_nswap = %d \n", usage->ru_nswap); return 0; } /* rusageは以下のように定義されている */ struct rusage { struct timeval ru_utime; /* 使用されたユーザー時間 */ struct timeval ru_stime; /* 使用されたシステム時間 */ 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; /* 送信されたメッセージ */ long ru_msgrcv; /* 受信されたメッセージ */ long ru_nsignals; /* 受信されたシグナル */ long ru_nvcsw; /* 意図したコンテキスト切り替え */ long ru_nivcsw; /* 意図しないコンテキスト切り替え */ };
出力はこんな感じ
ru_maxrss = 4 ru_nswap = 1
とりあえずリソース調査の際にはこの関数を使うとよさげ. どんな時に使うのかはよく分からないけど、共有メモリとか使ってる時にデバッグとかとして使うと予想