プロセスのメモリ使用状況を確認したい
ケース
自分が作ったバッチを動かし始めたら、サーバが重くなった。
なぜかswapが食いつぶされ始めた。
なぜかswapが食いつぶされ始めた。
確認方法
プロセスを確認$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND・・・ root 1243 0.0 12.4 439760 193312 ? Ssl May05 10:05 /root/script/***batch root 1281 0.0 0.0 108292 276 ? S May05 0:00 /bin/sh /usr/local/mysql/bin/mysqld mysql 2006 0.0 0.9 1009224 9656 ? Sl May05 15:38 /usr/local/mysql/bin/mysqld --based root 2054 0.0 0.0 64588 232 ? Ss May05 0:00 /usr/sbin/saslauthd -m /var/run/sas root 2056 0.0 0.0 64588 16 ? S May05 0:00 /usr/sbin/saslauthd -m /var/run/sas root 2057 0.0 0.0 64588 20 ? S May05 0:00 /usr/sbin/saslauthd -m /var/run/sas root 2058 0.0 0.0 64588 16 ? S May05 0:00 /usr/sbin/saslauthd -m /var/run/sas root 2060 0.0 0.0 64588 16 ? S May05 0:00 /usr/sbin/saslauthd -m /var/run/sas root 2134 0.0 0.0 79072 508 ? Ss May05 0:31 /usr/libexec/postfix/master postfix 2143 0.0 0.0 79324 716 ? S May05 0:14 qmgr -l -t fifo -u root 2168 0.0 0.0 117208 488 ? Ss May05 0:37 crond root 2179 0.0 0.0 21456 184 ? Ss May05 0:00 /usr/sbin/atd root 2200 0.0 0.0 4060 192 tty1 Ss+ May05 0:00 /sbin/mingetty /dev/tty1 root 2201 0.0 0.0 4076 216 ttyS0 Ss+ May05 0:00 /sbin/agetty /dev/ttyS0 115200 vt10 root 14426 0.0 0.3 98148 3944 ? Ss 12:25 0:00 sshd: root@pts/0 root 14430 0.0 0.1 108472 1860 pts/0 Ss 12:25 0:00 -bash postfix 16980 0.0 0.3 79152 3252 ? S 16:14 0:00 pickup -l -t fifo -u root 17034 0.0 0.1 110236 1124 pts/0 R+ 16:18 0:00 ps aux named 29231 0.0 0.7 249336 7232 ? Ssl May22 0:19 /usr/sbin/named -u named -t /var/na/root/script/***batchをみてみる。 /root/script/***batchはRSSが193312kB確保していることがわかる。該当のプロセスのステータスを確認する。# cat /proc/1243/statusName: /root/script/***batchState: S (sleeping)Tgid: 1243Pid: 1243PPid: 1TracerPid: 0Uid: 0 0 0 0Gid: 0 0 0 0Utrace: 0FDSize: 64Groups:VmPeak: 499856 kBVmSize: 439760 kBVmLck: 0 kBVmHWM: 301112 kBVmRSS: 193312 kBVmData: 393112 kBVmStk: 140 kBVmExe: 144 kBVmLib: 9012 kBVmPTE: 748 kBVmSwap: 105240 kB ←ここがswap使用容量Threads: 2SigQ: 1/7818SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: fffffffe7ff1a234SigIgn: 0000000000000000SigCgt: 0000000180005803CapInh: 0000000000000000CapPrm: ffffffffffffffffCapEff: ffffffffffffffffCapBnd: ffffffffffffffffCpus_allowed: 3Cpus_allowed_list: 0-1Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001Mems_allowed_list: 0voluntary_ctxt_switches: 624317nonvoluntary_ctxt_switches: 132741 |
ここで確認するのは、VmRSS、VmSwap
VmRSS: 126820 kB VmSwap: 170212 kB このプロセスは、はswapにデータが移動されていたことがわかる。
なんとかswapは少なめで済んでそう。他に原因があるため、同様の方法で調査をしていく。
VmRSS: 126820 kB VmSwap: 170212 kB このプロセスは、はswapにデータが移動されていたことがわかる。
なんとかswapは少なめで済んでそう。他に原因があるため、同様の方法で調査をしていく。
コマンド解説
ps aux
項目 内容------ --------------USER プロセスの所有ユーザーPID プロセス番号%CPU CPUの占有率%MEM 実メモリでの占有率VSZ 仮想分も含めた使用サイズ(Kバイト)RSS 実メモリ上の使用サイズ(Kバイト)TTY 端末名STAT プロセスの状態|br| R 稼動中|br| S 一時停止中|br| D 停止不可能で一時停止|br| T 終了処理中|br| Z ゾンビプロセス(すでに実体は無い)|br| W 実メモリ上に無くて,スワップアウトしている|br| N nice値START プロセスの開始時刻TIME プロセスの総実行時間COMMAND 実行コマンド名とパス(シェル表記の場合もあり) |
/proc/*/status
項目 内容------ --------------VmRSS 実メモリ使用サイズVmSwap swap使用サイズ |