このコマンドには、Linuxのマニュアルページに従って、次の目的で使用されるtime
フォーマットパラメータ「M」が含まれています。time
Maximum resident set size of the process during its lifetime, in Kilobytes.
time
ただし、プロセスの存続期間中にプロセスの最大仮想セットサイズを測定できないようです。 Linuxでどのようにこれを達成できますか?
明らかに、プロファイリング中のプロセスに対する制御権があるため、実行の終わりにこの子プロセスが終了する準備ができていることを示す信号をエクスポートする必要がある場合は、親がそのVSZを読み取って終了できps
ますpmap
。親プロセスがメモリを読み取った後、子プロセスを明示的に終了します。これを行うことはできますが、痛いので、プロファイリングされているプログラムコードを検出しないより簡単な解決策があるかもしれません。最大値を測定するなど、仮想time
セットサイズと直接等価であるのが理想的です。ただし、必要に応じてサブプロセスを開始するカスタム C プログラムを作成できます。ただし、Cパスに進むと、サブプロセスでVSZのカーネルトレースを有効にするためにどのシステムコールが使用されるかはわかりません。
どんな指針でも大変感謝いたします。
編集:これは些細なことではないことがわかりました。考えられる解決策は次のとおりです。https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process/10957355#10957355
ベストアンサー1
これがあなたに役立つかもしれませんが、pidstat -r 1 -p 1
/sbin/initの例は次のとおりです。
10:53:38 PID minflt/s majflt/s VSZ RSS %MEM Command
10:53:39 1 0.00 0.00 13648 1108 0.01 init
10:53:40 1 0.00 0.00 13648 1108 0.01 init
10:53:41 1 0.00 0.00 13648 1108 0.01 init
10:53:42 1 0.00 0.00 13648 1108 0.01 init
10:53:43 1 0.00 0.00 13648 1108 0.01 init
10:53:44 1 0.00 0.00 13648 1108 0.01 init