4

On a linux server (Ubuntu Lucid), my used swap keeps growing by the hour on a server, and I'm having a hard time identifying which process is growing in swap.

What tool can I use to monitor this?

raphink
  • 11,337
  • 6
  • 36
  • 47

3 Answers3

7

The usual way I do this is to let the system run until the swap utilization is evidently higher than it "should" be. Once you can see the problem run top, sort by Virtual Memory Size (sometimes just called Size, or VIRT on Linux -- The guy with the largest difference between VM Size and Resident size (RES) is usually your culprit.

The best way to know for sure is to make sure it's safe and then kill the process - If your swap suddenly frees up you found your leak.

voretaq7
  • 79,345
  • 17
  • 128
  • 213
  • Looking at the diff between resident memory and VM size is a good hint. Thanks. – raphink May 17 '11 at 15:18
  • It's about 90% reliable -- I've found very few programs that allocate gobs of RAM and intentionally let it go stale enough that it gets swapped out :) – voretaq7 May 17 '11 at 15:19
  • 2
    As a note, `<` and `>` can be used to select the column to sort by. – raphink May 18 '11 at 07:59
  • Didn't know about `<` and `>` (Apparently doesn't work on FreeBSD 8's `top` though - you have to use `o` to set the sort order there) – voretaq7 May 18 '11 at 15:15
2

https://stackoverflow.com/questions/131303/linux-how-to-measure-actual-memory-usage-of-an-application-or-process

Should help you out. :)

grufftech
  • 6,620
  • 4
  • 35
  • 37
1

Have you tried running top and pressing M to sort all processes by memory usage?

Lucky Luke
  • 1,555
  • 1
  • 9
  • 12