1
長時間実行されているLinuxプロセスで、短い間隔で使用される最大量のメモリを取得しようとしています。例えば、何かのように:時間間隔でメモリの最高水準点を取得します。
はresetmaxrss(); // hypothetical new command
void* foo = malloc(4096);
free(foo);
getrusage(...); // 'ru_maxrss' reports 4096 plus whatever else is alive
resetmaxrss();
void* bar = malloc(2048);
free(bar);
getrusage(...); // 'ru_maxrss' reports 2048 + whatever, *not* 4096
オプション私が発見し、除外しました:
getrusage
の最大RSSをリセットすることはできません。cgmemtime
はフードの下でwait4
を使用しているようですので、実行中のプロセスにクエリを実行することはできません。tstime
プロセスの終了を報告するため、実行中のプロセスを照会することもできません。良いですどれも
その他のオプション、:
- ポーリング。私たちの簡単な割り当てを逃し易い。
- コードを計測しています。使用されているすべてのメモリアロケータにアクセスすることはできませんので、これはあまりエレガントではありません。私はむしろ正確にOSによって報告された値を使用したいと思う。
これを行う方法はありますか?Linuxカーネルにパッチを提案するのは簡単ですか?