私が知っている限り、VSS RSS PSSやUSSなど、いくつかのメモリコンセプトがあります。ここで、USS(固有セットサイズ)はプロセス専用の物理メモリです(必要な場合は修正してください)。
どのプロセスが物理メモリを使いすぎているかを知らせるのに非常に便利な値でなければならないと思います。
しかし、この値をどのように取得できますか? psまたは/procファイルを介して?
(smemツールが役に立つかもしれませんが、組み込みの方法はありますか?)
20231015アップデート
この回答/proc/<pid>/smaps_rollupに合計値があると述べました。
grep "Private" /proc/1748/smaps_rollup
Private_Clean: 55700 kB
Private_Dirty: 67628 kB
Private_Hugetlb: 0 kB
したがって、全体の値を得ることができる。
awk '/Private/{ sum += $2 } END { print sum }' /proc/1748/smaps_rollup
答え1
正解は/proc/pid/smapsでプロセスメモリ使用量に関する情報を取得するこれを行うための指示が含まれています。具体的で正確なコマンドを提供するのではなく、USS
適用されるコマンドを提示するために必要なすべての情報と例を提供しますUSS
。
RSS
(約+)の項目を合計して取得できます(共有/個人の共有/ダーティ項目を合計する必要はありません)。Rss:
smaps
awk '/Rss:/{ sum += $2 } END { print sum }' /proc/$$/smaps
[...]
USS
には報告されていませんが、smaps
実際にはプライベートマップの合計なので、同じ方法で得ることもできます。
したがって、USS
プライベートマップの合計の場合は、summingと同じですが、RSS
すべての行に対して合計するのではなく、Rss:
すべてのプライベートマップに対して合計します(/Private/
代わりに/Rss:/
)。
awk '/Private/{ sum += $2 } END { print sum }' /proc/$$/smaps