The following is a demonstration of the anonpgpid.d script, Here we run it on a system that is implementing memory caps using the resource capping daemon, "rcapd", # anonpgpid.d Tracing... Hit Ctrl-C to end. ^C PID CMD D BYTES 6215 bash R 8192 6215 bash W 126976 5809 rcapd R 245760 6222 memleak.pl R 974848 6222 memleak.pl W 3055616 The "memleak.pl" process consumes memory, and we can see above that it has encountered both reads and writes to the physical swap device - it is being paged out. A bash shell was also effected (which was in the same project that rcapd was monitoring). The following is an ordinary system that is very low on memory, # anonpgpid.d Tracing... Hit Ctrl-C to end. ^C PID CMD D BYTES 18885 sendmail R 4096 18600 automountd R 4096 1 init R 4096 2456 inetd R 8192 18546 nscd R 8192 2400 bash R 12288 217 utmpd R 28672 221 ttymon R 32768 210 sac R 36864 18777 snmpd R 49152 18440 init R 49152 89 nscd R 61440 318 syslogd R 73728 487 snmpd R 81920 2453 inetd R 102400 165 in.routed R 131072 294 automountd R 135168 215 inetd R 135168 187 rpcbind R 204800 86 kcfd R 290816 7 svc.startd R 1015808 9 svc.configd R 1478656 2 pageout W 23453696 The "pageout" process is responsible for writing all the anonymous memory pages to the physical swap device, and we can see from the above that it has written 23 Mb. When processes access anonymous memory that has been swapped out, a major fault occurs and the memory is paged back in; in this case we can trace the process that was effected, and from the above we can see that several processes have been effected by the memory pressure. The most is "svc.configd", which needed to page back in 1.4 Mb of anonymous memory. Sometimes anonpgpid.d doesn't help too much. Here we only have pageouts to the physical swap device and no pageins, # anonpgpid.d ^C PID CMD D BYTES 2 pageout W 61083648 Only pageout is identified. |