Up: SGI admin Frequently Asked Questions (FAQ)
Next: -14- Why is there no way to set up a RAM disk under IRIX?
Previous: -12- How can I increase my swap space?
Subject: -13- What are virtual and logical swap space? How do they
work in IRIX 3.x, 4.0.x and 5.x?
Date: 05 Jul 1994 00:00:01 EST
Two terms whose meanings should already be clear: Physical swap space
is an area on disk, either a partition or (in IRIX 5.x) a swap file.
Virtual memory is the sum of physical memory and swap space.
IRIX 3.x accepts a memory request only if enough virtual memory is
free. Even if a process isn't using most of the memory it requested
(which happens often, e.g. when a large process forks and execs a
small process, or with Fortran 77 programs which allocate all storage
statically), its memory is unavailable to other processes until it
exits. IRIX 3.x has no virtual or logical swap space.
In IRIX 4.0.x, IRIX accepts every memory request, and does not
allocate virtual memory until a process actually tries to use it.
This allows programs which request more memory than they use to run
with much less memory than would otherwise be required. If too many
processes actually use their memory requests so that virtual memory
is in danger of filling up, IRIX kills one or more processes. IRIX
usually kills the process which is using the most virtual memory,
which may well not be the process which most recently requested
virtual memory.
IRIX 5.x works like IRIX 4.0.x, but one can set the amount of virtual
memory which IRIX is allowed to overallocate. This amount is called
"virtual swap space". "Logical swap space" is the sum of physical and
virtual swap. There is no virtual swap space by default, so IRIX 5.x
behaves like IRIX 3.x. One can set virtual swap to any amount of
memory; if it is set sufficiently high, memory requests will always
be granted, just like IRIX 4.0.x. Using jargon retroactively, IRIX
4.0.x has an infinite amount of virtual swap space.
Large or infinite amounts of virtual swap space work well for many
people, because most programs don't use all the virtual memory they
request, at least not at once. If your programs do use all their
virtual memory, they'll be killed and you'll see "Process killed due
to insufficient memory/swap" messages in your SYSLOG.
Under IRIX 4.0.x, you can only turn virtual swap off completely by
setting the kernel variable availsmem_accounting to 1. Doing so makes
IRIX 4.0.x behave like IRIX 3.x, allocating memory only if it is
actually available.
Under IRIX 5.x, you can turn virtual swap on or off by doing
'chkconfig vswap off' or 'chkconfig vswap on', or change the size of
virtual swap by editing /etc/config/vswap.options, and rebooting. You
can also use 'swap -v' to do any of these things directly and without
rebooting.
Remember that IRIX 5.x comes with virtual swap turned off and set to
zero. If you were happy with IRIX 4.0.x, you should turn virtual
swap on and set its size to a very large number. If programs are
killed, decrease the size of virtual swap or turn it off.
See the swap(1M) and swapctl(2) manpages for details.
Up: SGI admin Frequently Asked Questions (FAQ)
Next: -14- Why is there no way to set up a RAM disk under IRIX?
Previous: -12- How can I increase my swap space?