Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

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.