手順
例として、Zabbixサーバーのメモリ使用量を計算してみましょう。
まずはZabbix関係のプロセスをgrepします。
# ps -ely | grep zabbix
以下の出力例では読みやすさのためにヘッダ行を追記しています。上記のコマンドでgrepした場合、実際にはヘッダ行は表示されません。
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 101 8520 1 0 80 5 2056 31310 - ? 00:00:01 zabbix_server
S 101 8522 8520 0 80 5 3004 31310 - ? 00:37:19 zabbix_server
S 101 8524 8520 0 80 5 29292 45337 - ? 01:14:22 zabbix_server
S 101 8525 8520 0 80 5 29296 45337 - ? 01:14:31 zabbix_server
S 101 8527 8520 0 80 5 29292 45337 - ? 01:14:25 zabbix_server
S 101 8529 8520 0 80 5 29264 45337 - ? 01:14:18 zabbix_server
S 101 8531 8520 0 80 5 29292 45337 - ? 01:14:29 zabbix_server
S 101 8532 8520 0 80 5 8880 45337 - ? 00:00:04 zabbix_server
S 101 8535 8520 0 80 5 1612 31331 - ? 00:00:36 zabbix_server
S 101 8537 8520 0 80 5 1516 31331 - ? 00:00:34 zabbix_server
S 101 8539 8520 0 80 5 1516 31331 - ? 00:00:33 zabbix_server
S 101 8541 8520 0 80 5 1516 31331 - ? 00:00:36 zabbix_server
S 101 8543 8520 0 80 5 1516 31331 - ? 00:00:32 zabbix_server
S 101 8546 8520 0 80 5 1348 31453 - ? 00:00:03 zabbix_server
S 101 8548 8520 0 80 5 2064 31827 - ? 00:00:01 zabbix_server
S 101 8550 8520 0 80 5 1992 31457 - ? 01:06:53 zabbix_server
S 101 8552 8520 0 80 5 1332 31310 - ? 00:00:19 zabbix_server
S 101 8554 8520 0 80 5 1324 31310 - ? 00:00:13 zabbix_server
S 101 8555 8520 0 80 5 2904 45282 - ? 00:00:33 zabbix_server
S 101 8556 8520 0 80 5 27332 31374 - ? 02:15:11 zabbix_server
S 101 8557 8520 0 80 5 27352 31374 - ? 02:14:46 zabbix_server
S 101 8558 8520 0 80 5 27312 31374 - ? 02:15:04 zabbix_server
S 101 8559 8520 0 80 5 27304 31374 - ? 02:14:39 zabbix_server
S 101 8566 8520 0 80 5 1552 31310 - ? 00:00:08 zabbix_server
S 101 8568 8520 0 80 5 1328 31310 - ? 00:00:03 zabbix_server
S 101 17342 1 0 89 5 488 12020 wait ? 00:00:00 zabbix_agentd
S 101 17344 17342 0 82 5 608 12020 - ? 00:27:23 zabbix_agentd
S 101 17345 17342 0 80 5 728 12025 - ? 01:19:02 zabbix_agentd
S 101 17346 17342 0 80 5 728 12025 - ? 01:18:29 zabbix_agentd
S 101 17347 17342 0 80 5 728 12025 - ? 01:18:55 zabbix_agentd
S 101 17348 17342 0 80 5 492 12022 - ? 00:00:37 zabbix_agentd
zabbix_serverとzabbix_agentd、二種類のプロセスが見つかりましたが、明らかにzabbix_serverの方が目的のプロセスなので、コマンド名にzabbix_server
を指定してメモリ使用量を表示します。
# ps -C zabbix_server -o vsz,rss
VSZ RSS
125240 2056
125240 3004
181348 29292
181348 29296
181348 29292
181348 29264
181348 29292
181348 8880
125324 1612
125324 1516
125324 1516
125324 1516
125324 1516
125812 1348
127308 2064
125240 1428
125240 1332
125240 1324
181128 2904
125496 27332
125496 27352
125496 27312
125496 27304
125240 1552
125240 1328
ここでVSZは仮想メモリサイズ、RSSは物理メモリ(実メモリ)サイズを表しています。この2つにはプロセスの一部 (page tables, kernel stack, struct thread_info, struct task_struct)が含まれていません。それらは最低20KB以上のサイズがあり、必ずメモリに常駐しています。
さて、この結果を電卓片手に集計してもいいのですが、ここではawkに渡して集計してもらいましょう。
# ps -C zabbix_server -o vsz,rss | awk '{v+=$1;r+=$2}END{print v,r}'
3527620 290632
単位はKBです。仮想メモリサイズとして3527620KB≒3.4GB、物理メモリサイズとして290632KB≒284MBを使っていることがわかりました。