psコマンドを使用して、プロセスの仮想メモリサイズと常駐メモリサイズを取得できます。
$ ps aux | grep apache2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
www-data 31141 0.0 0.3 163864 24008 ? S 16:15 0:01 /usr/sbin/apache2 -k start
仮想メモリと常駐メモリは共有ライブラリも考慮しているため、プロセスの物理メモリ空間に対する正確な精度は提供されません。
したがって、より良い解決策は、pmapを使用してプロセスの物理メモリ使用量を取得することです。したがって、上記と同じプロセスを使用したpmapの出力は次のようになります。
$ sudo pmap -d 31141
31141: /usr/sbin/apache2 -k start
Address Kbytes Mode Offset Device Mapping
00007f85bbb82000 28 r-x-- 0000000000000000 0fc:00000 libnss_dns-2.15.so
...
...
mapped: 163864K writeable/private: 28420K shared: 592K
したがって、「書き込み可能/個人」値は、約28 MBのプロセスのプライベートメモリです。私の質問:このプライベートメモリはメインメモリ(RAM)だけですか?または、この数にスワップスペースを含めることができますか?
ベストアンサー1
次のタイトルの記事を見つけました。Linuxのメモリ使用量について私の考えでは、以前はlinuxquestions.orgのウェブサイトで見つけて、タイトルのものよりも優れていると思います。どのように精密メモリ使用量を測定しますか?。
から抜粋 記憶の理解…投稿
ピコ秒出力USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dbunker 3468 0.0 2.7 25400 14452 ? S 20:19 0:00 kdeinit: kedit
マッピング出力
Address Kbytes Mode Offset Device Mapping
08048000 40 r-x-- 0000000000000000 0fe:00000 kdeinit
08052000 4 rw--- 0000000000009000 0fe:00000 kdeinit
08053000 1164 rw--- 0000000008053000 000:00000 [ anon ]
40000000 84 r-x-- 0000000000000000 0fe:00000 ld-2.3.5.so
40015000 8 rw--- 0000000000014000 0fe:00000 ld-2.3.5.so
40017000 4 rw--- 0000000040017000 000:00000 [ anon ]
... (trimmed) ...
mapped: 25404K writeable/private: 2432K shared: 0K
何が起こっているのか説明
出力を見ると、Kbytesは最大の行が一般的に共有ライブラリを含むコードスニペットであることがわかります(「lib」で始まる行は共有ライブラリです)。これの利点は、プロセス間で共有できることです。プロセス間で共有されるすべての部分を分離すると、出力の下部に表示される「書き込み可能/個人」の合計が生成されます。これは、共有ライブラリを除くプロセスの増分コストと見なすことができます。したがって、このKEditインスタンスを実行するためのコスト(すべての共有ライブラリがロードされたと仮定)は約2MBです。これは、psが報告した14MBまたは25MBとはまったく異なります。
プロセスXはどのくらいのスワップスペースを使用しますか?
次のコマンドを使用すると、プロセスが使用しているスワップ領域を確認できます。
$ grep VmSwap /proc/$(pidof chrome | awk '{print $1}')/status
VmSwap: 1324 kB
chrome
上記は、最初の戻り値のPIDを取得することですVmSwap
。
記憶統計学者
正確なメモリ測定を探している場合は、このツールを確認してくださいmemstat
。名前は次のとおりです。
Cyberciti.biz には次のタイトルのチュートリアルがあります。Linux:仮想メモリのすべてを占めるものは何ですか?これがmemstat
実際に見えます。