[linux]show per-process swap usage via procfs
任意のプロセスのページがどの程度swapoutしているかを知りたくて調べてみたのですが、残念ながら明確な答えを見つけられませんでした。ただ、/proc/(PID)/statusにRSS等の情報を出力する仕組みを利用して、同ファイルにswap使用量を追記するpatchを見つけたので、v3をあてて試してみました。
[show per-process swap usage via procfs]
http://groups.google.co.jp/group/linux.kernel/browse_thread/thread/8b1c63c64a5238c5?pli=1
mysqldの/proc/(PID)/statusを見てみると、
$ cat /proc/5017/status Name: mysqld State: S (sleeping) Tgid: 5017 Pid: 5017 PPid: 4975 TracerPid: 0 Uid: 113 113 113 113 Gid: 124 124 124 124 FDSize: 256 Groups: 124 VmPeak: 128116 kB VmSize: 127092 kB VmLck: 0 kB VmHWM: 17032 kB VmRSS: 17032 kB VmData: 116692 kB VmStk: 84 kB VmExe: 6832 kB VmLib: 2964 kB VmPTE: 72 kB VmSwap: 1 kB <--- ココ Threads: 10 SigQ: 0/3577 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000087007 SigIgn: 0000000000001006 SigCgt: 00000001800066e9 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: fffffffffffffeff Cpus_allowed: 1 Cpus_allowed_list: 0 Mems_allowed: 1 Mems_allowed_list: 0 voluntary_ctxt_switches: 91 nonvoluntary_ctxt_switches: 17 Stack usage: 40 kB
「VmSwap:」という項目が増えました。1KB使用されています…ページサイズよりも小さいのは何故だろう?
しかし、freeでswap領域の使用量を確認してみると、
$ free total used free shared buffers cached Mem: 514340 327244 187096 0 14708 174268 -/+ buffers/cache: 138268 376072 Swap: 915664 0 915664
「used」が0のままです。よくわからん。折角なので、追えるだけ追ってみようかな、と。