ps または top で、非共有 (プライベート) メモリ使用量によってプロセスを並べ替える方法はありますか?

ps または top で、非共有 (プライベート) メモリ使用量によってプロセスを並べ替える方法はありますか?

pmap -x例えば、匿名とスタックマッピングを合計することで、非共有メモリ使用量を計算することができました。

sudo pmap -x $THE_PID |egrep 'anon|stack' | awk '{print $2}' | paste -sd+ | bc

psしかし、同様の情報を取得する方法がまったく見つかりません。列topは表示されますSHRが、共有されていないメモリで並べ替える方法は提供されていないようです。RSS には共有ページが含まれますが、AFAICS ではプロセスがアクセスした共有ページのみであるため、RSS による並べ替えは役に立ちません。

したがって、同じ 16 GB の共有アドレス空間を使用する 2 つのプロセスがある場合、どちらのプロセスが共有メモリをより多く使用したかに基づいてソートされます。両方のプロセスが同じ量の shmem またはそれに近い量を使用した場合を除き、どちらのプロセスがより多くのプライベート (非共有) メモリを割り当てたかに基づいてソートされることはありません。

同様の問題は、共有ライブラリの読み取り/書き込みマッピングや、祖先からのコピーオンライトページを共有するforked されたが 'd されていないプロセスでも発生します。exec

これは...役に立ちません。

出力を式でソートする方法を調べましたtop。しかし、ソート構文でサポートされているかどうかはわかりません。

これは非常に明白なことのように思えますが、ps は共有情報をまったく公開しません。

何か見落としていることがあれば教えてください。

関連情報