Posts

Showing posts from April, 2010

Show real swap usage for each individual process

Image
Update: the kernel patch is already in 2.6.34-rcN.

Currently, in top, the SWAP column only shows the difference between VIRT and RES:
case P_SWP:
MKCOL(scale_num(PAGES_TO_KB(p->size - p->resident), w, s));So currently the value is of no use.

As a matter of fact, a recent enough kernel has provided the information which is needed to calculate the swap usage for each process. It is in /proc/$PID/smaps. But using smaps may affect top's performance because you have to calculate the sum yourself.

But with this patch https://patchwork.kernel.org/patch/56929/, the kernel will keep track of each process's swap usage for you. This patch (maybe not exactly in the same shape) is already in mmotm tree (http://userweb.kernel.org/~akpm/mmotm/) 2.6.34-rcN.

However, checking the /proc/$PID/status file directly may not be a thing which people would like to do. So I decided to make a patch for ps and top. Now it seems to be working.

This is the vanilla ps:
$ ps -o m_swap,comm -e | grep …

Generate coredumps automatically in specified directory

If you are into investigating coredumps, or you are just curious about how many processes have coredumped, then this is for you:

1. add the following line to /etc/security/limits.conf
* - core unlimited2. add the following line to /etc/sysctl.conf
kernel.core_pattern = /corefiles/core.%e.%p%e is the executable filename, %p is pid.
Please check the "Naming of core dump files" section of man 5 core for more information on this.

3. run "sysctl -p", then logout and login. Or just reboot.

This is what I have on my Yeeloong:
$ ls /corefiles/
core.genstrings.11832 core.nscd.10278 core.nscd.12821 core.nscd.13617 core.nscd.23172 core.nscd.29367 core.nscd.6428
core.genstrings.18210 core.nscd.10281 core.nscd.13061 core.nscd.13620 core.nscd.23175 core.nscd.29368 core.nscd.6431
core.main.19478 core.nscd.10284 core.nscd.13064 core.nscd.19028 core.nscd.24042 core.nscd.29369
core.main.19702 core.nscd.10293 cor…