Re: why swap at all?

From: Helge Hafting
Date: Wed May 26 2004 - 08:17:45 EST


John Bradford wrote:

Quote from Helge Hafting <helgehaf@xxxxxxxxxxxxx>:


Anthony DiSante wrote:



As a general question about ram/swap and relating to some of the issues in this thread:

~500 megs cached yet 2.6.5 goes into swap hell

Consider this: I have a desktop system with 256MB ram, so I make a 256MB swap partition. So I have 512MB "memory" and if some process wants more, too bad, there is no more.

Now I buy another 256MB of ram, so I have 512MB of real memory. Why not just disable my swap completely now? I won't have increased my memory's size at all, but won't I have increased its performance lots?

This is correct. You now have 512M of fast memory instead of
256M fast memory and 256M "slow" memory. You don't _need_ to have additional
swap, but it is usually a good idea. If you keep your 256M of swap, then you now
have 512M fast memory + 256M slow memory for a total of 768M. This is even better.



I strongly disagree on the last point. It may be better, but it may also
be a lot worse. Too much swap can be a bad thing - see my example in another
post about run-away processes on remote machines.


Well, way too much swap is of course not good. A swap that is half
the size of memory isn't that bad - at any time, at least two thirds of
what you want in memory is bound to be there. 10x as much swap as memory
might be bad though.

Please note that your machine _will_ do one kind of swapping even if you
don't configure any swap: Executable files are a kind of swap-files,
if memory pressure happens then (part of) your programs will be evicted
from memory _because_ they can be reloaded from their executables.

This cause the same sort of performance degradations as swapping to
a swap partition. Actually, it is worse because swapping to a swap partition
allows swapping out little-used writeable memory before discarding
program code that might see more use. So if swapping happens, then
you're better off with a swap partition because then it is the least used
stuff that goes first. Without a swap partition, the least used program code
goes, but it may or may not be the least used memory overall.



Again, the user _may_ be better off swapping to a swap partition rather than
having executable code paged out, but this is not necessarily true in all
circumstances.


The problem is that swapping happens. A small swap (no more than
the amount you accept being swapped out) ensures that the
paging code can select the best page for eviction, rather than
being forced to evict code.

If you worry about runaway processes and/or troublesome users,
use ulimit.

Helge Hafting

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/