Look at the " -/+ buffers/cache" line in the free output: Before: -/+ buffers/cache: 41 450 After: -/+ buffers/cache: 48 443
(First number used, second free) Linux has various buffers and caches that are allocated if there is free memory. For example for disk reads. These are dropped if the memory is needed by processes. The " -/+ buffers/cache" line shows what memory is actually used by processes and not the buffers. In your case the used memory rose only by 7 MB. BTW I would not look at the virtual memory size of proceses, this may be allocated way over the virtual memory size of your machine. The more interesting metric is RSS which is how much memory is actually used. HTH, Tomas Tomas Pavelka CA Technologies Sr Software Engineer CA CZ, s.r.o V Parku 12, 148 00 Praha Czech Republic Office: +25996 | tomas.pave...@ca.com Id. Císlo 25694073, z obchodního rejstříku, vedeného Městským soudem v Praze, oddíl C, vložka 61808 / Id. No. 25694073, registered in the Commercial Register maintained by the Municipal Court in Praque, Section C, File 61808 -----Original Message----- From: Linux on 390 Port [mailto:LINUX-390@VM.MARIST.EDU] On Behalf Of Michael MacIsaac Sent: Thursday, July 09, 2015 2:19 PM To: LINUX-390@VM.MARIST.EDU Subject: How to find a memory leak? Hello list, I have a SLES 11 SP3 system that is leaking memory, but I don't know how or where. I find a script on the Internet that runs forever, adapt it somewhat, and start logging some info to a temp file. Here's the script: # cat memusage #!/bin/bash # # track memory usage # outFile="/tmp/memusage" while true do echo "---------------------------------------------------" >> $outFile date >> $outFile ps aux --sort -vsz | head -22 >> $outFile echo >> $outFile free -m >> $outFile sleep 300 done After a fresh reboot of a 512 MB virtual machine, I start the script and the first entry in the temp file shows about 20 MB (512 - 492) used by Linux and 97 MB used by processes: Wed Jul 8 12:37:45 EDT 2015 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2181 0.0 0.2 115404 1024 ? Ssl 12:36 0:00 /usr/sbin/nscd root 1851 0.0 0.1 11512 692 ? S<sl 12:36 0:00 /sbin/auditd -s disable root 2556 0.3 0.7 11456 4004 ? Ss 12:37 0:00 sshd: root@pts/0 root 2306 0.0 0.7 10720 3700 ? Ss 12:36 0:00 /usr/sbin/httpd2-prefork wwwrun 2307 0.0 0.4 10720 2204 ? S 12:36 0:00 /usr/sbin/httpd2-prefork wwwrun 2308 0.0 0.4 10720 2204 ? S 12:36 0:00 /usr/sbin/httpd2-prefork wwwrun 2309 0.0 0.4 10720 2204 ? S 12:36 0:00 /usr/sbin/httpd2-prefork wwwrun 2310 0.0 0.4 10720 2204 ? S 12:36 0:00 /usr/sbin/httpd2-prefork wwwrun 2311 0.0 0.4 10720 2204 ? S 12:36 0:00 /usr/sbin/httpd2-prefork root 1853 0.0 0.1 10428 824 ? S<sl 12:36 0:00 /sbin/audispd root 997 0.0 0.6 9036 3224 ? Ssl 12:36 0:00 /usr/sbin/console-kit-da root 2265 0.0 0.5 8136 2532 ? Ss 12:36 0:00 /usr/lib/postfix/master postfix 2277 0.0 0.4 8004 2372 ? S 12:36 0:00 qmgr -l -t fifo -u postfix 2276 0.0 0.4 7948 2352 ? S 12:36 0:00 pickup -l -t fifo -u root 2172 0.0 0.3 7916 1532 ? Ss 12:36 0:00 /usr/sbin/sshd -o PidFi 101 994 0.0 0.5 7852 2804 ? Ss 12:36 0:00 /usr/sbin/hald --daemon root 1869 0.0 0.8 6464 4504 ? Ss 12:36 0:00 /sbin/haveged -w 1024 - root 2559 1.0 0.6 6056 3076 pts/0 Ss 12:37 0:00 -bash root 998 0.0 0.2 3980 1332 ? S 12:36 0:00 hald-runner root 2591 0.0 0.3 3652 1604 pts/0 S+ 12:37 0:00 /bin/bash /usr/local/sb root 2343 0.0 0.1 3508 944 ? Ss 12:36 0:00 /usr/sbin/xinetd -pidfi total used free shared buffers cached Mem: *492 97* 394 0 5 50 -/+ buffers/cache: 41 450 Swap: 898 0 898 This morning the last entry shows 156 MB used by processes: ~59 MB of memory lost in less than a day. But the 'VSZ' of the top 22 processes seems to be about the same: Thu Jul 9 07:57:47 EDT 2015 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2181 0.0 0.2 115404 1088 ? Ssl Jul08 0:00 /usr/sbin/nscd root 1851 0.0 0.1 11512 692 ? S<sl Jul08 0:00 /sbin/auditd -s disable root 44879 0.0 0.7 11456 4008 ? Ss 07:36 0:00 sshd: root@pts/1 root 44913 0.0 0.7 11456 4008 ? Ss 07:37 0:00 sshd: root@pts/2 root 2306 0.0 0.7 10720 3700 ? Ss Jul08 0:01 /usr/sbin/httpd2-prefork wwwrun 2307 0.0 0.4 10720 2204 ? S Jul08 0:00 /usr/sbin/httpd2-prefork wwwrun 2308 0.0 0.4 10720 2204 ? S Jul08 0:00 /usr/sbin/httpd2-prefork wwwrun 2309 0.0 0.4 10720 2204 ? S Jul08 0:00 /usr/sbin/httpd2-prefork wwwrun 2310 0.0 0.4 10720 2204 ? S Jul08 0:00 /usr/sbin/httpd2-prefork wwwrun 2311 0.0 0.4 10720 2204 ? S Jul08 0:00 /usr/sbin/httpd2-prefork root 1853 0.0 0.1 10428 824 ? S<sl Jul08 0:00 /sbin/audispd root 997 0.0 0.6 9036 3224 ? Ssl Jul08 0:00 /usr/sbin/console-kit-da root 2265 0.0 0.5 8136 2532 ? Ss Jul08 0:00 /usr/lib/postfix/master postfix 2277 0.0 0.4 8004 2372 ? S Jul08 0:00 qmgr -l -t fifo -u postfix 44778 0.0 0.4 7948 2356 ? S 06:56 0:00 pickup -l -t fifo -u root 2172 0.0 0.3 7916 1664 ? Ss Jul08 0:00 /usr/sbin/sshd -o PidFi 101 994 0.0 0.5 7852 2852 ? Ss Jul08 0:00 /usr/sbin/hald --daemon root 1869 0.0 0.8 6464 4504 ? Ss Jul08 0:00 /sbin/haveged -w 1024 - root 44882 0.0 0.6 6056 3052 pts/1 Ss 07:36 0:00 -bash root 44916 0.0 0.5 6056 2876 pts/2 Ss+ 07:37 0:00 -bash mike 44992 0.0 0.5 6056 3004 pts/1 S+ 07:56 0:00 -bash total used free shared buffers cached Mem: *492 156 * 335 0 24 83 -/+ buffers/cache: 48 443 Swap: 898 0 898 Is there a better way to detect memory leaks? Are there any known 'culprits'? Any help will be appreciated. Thanks. -Mike MacIsaac ---------------------------------------------------------------------- For LINUX-390 subscribe / signoff / archive access instructions, send email to lists...@vm.marist.edu with the message: INFO LINUX-390 or visit http://www.marist.edu/htbin/wlvindex?LINUX-390 ---------------------------------------------------------------------- For more information on Linux on System z, visit http://wiki.linuxvm.org/