When does swap decreases

Dan Nelson dnelson at allantgroup.com
Tue Jun 21 03:49:58 GMT 2005

In the last episode (Jun 20), Francisco Reyes said:
> On Mon, 20 Jun 2005, Dan Nelson wrote:
> >In the last episode (Jun 20), Francisco Reyes said:
> >>How wonder how the current method affects performance. Basically if
> >>there is a surge of memory usage and processes start that use the
> >>swap and these processes are long lived.. I wonder if performance
> >>will be affected.
> >
> >There may even be a performance gain, since if the system comes
> >under memory pressure again, some of the in-memory pages of those
> >long-lived processes previously copied to swap may still be clean,
> >and the system won't even have to page them out; it can simply free
> >the RAM.  I can't think of any way for there to be a performance
> >hit, unless you actually run out of swap.
> I must really be missing something here.. My case. 384MB of RAM For
> several days swap was 0. That to me means that everything was fitting
> nicely into memory.
> At one point in the last few days I must have opened too many
> windows/apps.. and the OS actually had to use swap.
> Once I closed programs (xpecially X, Opera, and other GUI apps) I
> expected the swap would go back to 0.

Have you disabled all of your console login screens?  Each one has a
getty process that'll never get swapped back in if you always use X. 
Same thing for sshd, sendmail, /bin/sh wrapper scripts around programs,
and probably a dozen other processes that get rarely used on an X
desktop machine.  You've got more than enough idle pages to account for
10MB of used swap.
> Swap remained at 10MB.. Whatever processes are using the swap aren't
> they accessing the HD?

If you mean "aren't they accessing swap?", the answer is "only the
first time they need to retrieve the pages".  To the virtual memory
system, swap is no different from the disk blocks used to store the
contents of /bin/ls.  The first time you use them, they get paged into
RAM.  The next time, they're already in RAM.  If the system is low on
RAM, it first discards clean pages that it can re-fetch from disk
(/bin/ls code for example, or process memory that was swapped out at
some point but is still clean).  The remainder is either dirty disk
cache pages (which it can simply sync to disk), or private process
memory (which gets written to new swap blocks).

> Can there be swap usage, yet the OS doing all the work on memory?

Certainly.  It's easy to verify this by tunning top and watching the
Swap line.  If you don't see any "In/Out" data, you're not swapping. 
You can also run "vmstat -s | grep swap" at intervals and verify that
the counters aren't increasing.

	Dan Nelson
	dnelson at allantgroup.com

More information about the freebsd-questions mailing list