HOW-TO: Add SWAP Space (Solaris)

Although it rarely happens, sometimes a Solaris system would badly need more swap. But without a free device to use as swap, a file can be created instead to serve as additional swap space.

This happens due to several reasons, but one most popular cause is the filling up of /tmp. The /tmp directory is allocated from the system's swap resources. This feature means that as you use up space in the /tmp directory, you are also using up swap space. So if your applications use the /tmp directory heavily and you do not monitor swap space usage, your system could run out of swap space.

Filling /tmp is a symptom that the system is running out of swap. But note that /tmp can be free but swap is fully utilized. How is this checked? The answer with the "swap" command. The /usr/sbin/swap command is used to administer swap areas. Two options, -l and -s, display information about swap resources.

The -l option is to list the swap devices or resources:

root@host # swap -l
swapfile dev swaplo blocks free
/dev/dsk/c1d0d0s0 29,0 8 1638608 1600528

While the -s option is used to monitor swap devices or resources:
root@host # swap -s
total: 57416k bytes allocated + 10480k reserved = 67896k used, 833128k available

As seen from the example above, swap is hardly used up. Assuming swap is in critical usage, how is swap added to the system?
* use mkfile to create a suitably sized file to allocate as additional swap
root@host # mkfile 512m /PATH/WITH/SPACE/swapfile

use the above command to create a 512MB file (named swapfile) in the directory /PATH/WITH/SPACE. As alternative, the command to create a swap file in Linux. although it needs the proper permissions to be set (-rw------T). While mkfile sets it straight with the correct permissions for a swap file.

* tell the system to start using the newly created file as swap
root@host # swap -a /PATH/WITH/SPACE/swapfile

It is important to provide the full path to the swapfile, otherwise an error will occur.

Execution of the two commands above adds 512MB to the swap space of the system. To verify that the swap is in use, use the -l option of swap:
root@host # swap -l
swapfile dev swaplo blocks free
/dev/dsk/c1d0d0s0 29,0 8 1638608 1600528
/PATH/WITH/SPACE/swapfile - 8 1048568 1048568

This addition does not persist across reboots although the swapfile created will exist. Configuration files need to be updated to make the changes permanent. Add the line below in /etc/vfstab to make the additional swap space persist across reboots.
/PATH/WITH/SPACE/swapfile   -   -   swap   -   no   -

Once a permanent solution to the swap space problem is in place, the added swapfile can be deleted from the system's swap resources. Just like the addition did not require a reboot, the deletion likewise does not need a reboot. The swap utility can be again used for the same purpose.
root@host # swap -d /PATH/WITH/SPACE/swapfile

You might also be interested in:


We at pimp-my-rig strive to keep on improving, help us reach that goal by leaving comments or constructive criticisms. Don't miss out on our next feature -- subscribe via RSS (What is RSS?).

Share This