dillon at apollo.backplane.com
Sat Apr 9 17:40:13 PDT 2005
:`Regarding how the DragonFly VM handles swapping and caching.
:For example I have a 256m ram + 256 swap system which performs nicely
:for daily tasks. If I was to add 256m ram wouldn't it be better to
:turn off the swap partition.
Do a 'pstat -s' and see how much swap you are currently using (do this
after the machine has had at leat 2 days of uptime so you can see what
real impact there is, if any).
:Can swap provide performance improvements by allowing unused memory
:to be replaced with often used memory?
Yes. If the machine's working set (running programs plus the entire
contents of the files they read or write) exceeds available memory
then having swap will allow the system to free up memory associated
with entirely idle processes, like getty's, allowing that memory
to be reused by the programs that are running.
:If executables and libraries usually stay in the filesystem cache.
:When swapping is disabled and there is memory pressure are they
:evicted from memory? Will it feel the same or worse as swapping if the
:VM evicts from the cache instead because the programs can be read from
:the disk anyway?
Executables and libaries are mostly backed by the binary and library
files that they were loaded from. They get evicted based on memory
pressure in a mechanism that is independant of the swap mechanism.
:Does swap affect the VM's decisions?
:If yes does the VM work faster or slower when swap is turned off?
Swap does affect the VM's decisions. VM does not go any faster or
slower with swap turned off, however.
:Except for additional space/memory and coredumps are there other
:benefits from having a swap partition?
It's a good idea to have swap space even if you don't think you
will ever need it. There are several reasons for this.
* You might occassionally need to run a program which eats a lot
of memory like, say, 'gimp', or processes a lot of files (say, like
a large CVS repository), which goes beyond your normal use of the
machine. Having some swap allows the machine to page out anonymous
(non-file-backed) memory associated with idle processes and reuse
that for the new workload.
* You can characterize your machine's current needs but you never know
what you might want to do with it in the future.
* It's a good safety net in case a program runs away or the machine gets
attacked or something unexpected happens.
* It holds kernel cores.
* In the future the journaling code will be able to use swap space as
an emergency spool.
And other reasons. crater.dragonflybsd.org has 1G of memory and 2G
of configured swap and it basically doesn't use any of the swap under
normal operation. The developer machine, leaf, is in the same
situation. My workstation has 512MB of ram and 1GB of swap and only
very occassionally digs into the swap space (like once a month or so).
:Can swapping be tuned or regulated?
: Eduardo Tongson
Not much. People with multiple hard disks will often put a swap
partition on each hard disk. The VM system will then interleave any
swap related I/O between the two disks which makes it more efficient.
There are a couple of sysctl's that can be used to tune how aggressive
the system is in using swap:
Mostly you do not want to mess with these, however. 'man tuning' will
give you some information on e.g. swap idle thresholds. But for the
most part these sysctls are meant to be used to manage swap on heavily
loaded multi-user boxes.
<dillon at xxxxxxxxxxxxx>
More information about the Kernel