Keywords: sag

Next: Using a swap space Up: Memory Management Previous: What is virtual memory?

# Creating a swap space

A swap file is an ordinary file; it is in no way special to the kernel. The only thing that matters to the kernel is that it has no holes, and that it is prepared for use with `mkswap` . It must reside on a local disk, however; it can't reside in a filesystem that has been mounted over NFS due to implementation reasons.

The bit about holes is important. The swap file reserves the disk space so that the kernel can quickly swap out a page without having to go through all the things that are necessary when allocating a disk sector to a file. The kernel merely uses any sectors that have already been allocated to the file. Because a hole in a file means that there are no disk sectors allocated (for that place in the file), it is not good for the kernel to try to use them.

One good way to create the swap file without holes is through the following command:

> ``$` dd if=/dev/zero of=/extra-swap bs=1024 count=1024
> `1024+0 records in`
> `1024+0 records out`
> `$``

where `/extra-swap` is the name of the swap file and the size of is given after the `count=`. It is best for the size to be a multiple of 4, because the kernel writes out memory pages, which are 4 kilobytes in size. If the size is not a multiple of 4, the last couple of kilobytes may be unused.

A swap partition is also not special in any way. You create it just like any other partition; the only difference is that it is used as a raw partition, that is, it will not contain any filesystem at all. It is a good idea to mark swap partitions as type 82 (Linux swap); this will the make partition listings clearer, even though it is not strictly necessary to the kernel.

After you have created a swap file or a swap partition, you need to write a signature to its beginning; this contains some administrative information and is used by the kernel. The command to do this is `mkswap` , used like this:

> ``$` mkswap /extra-swap 1024
> `Setting up swapspace, size = 1044480 bytes`
> `$``

Note that the swap space is still not in use yet: it exists, but the kernel does not use it to provide virtual memory.

You should be very careful when using `mkswap` , since it does not check that the file or partition isn't used for anything else. You can easily overwrite important files and partitions with `mkswap` ! Fortunately, you should only need to use `mkswap` when you install your system.

The Linux memory manager limits the size of each swap space to about 127 MB (for various technical reasons, the actual limit is bytes, or 127.6875 megabytes). You can, however, use up to 16 swap spaces simultaneously, for a total of almost 2 GB.

Next: Using a swap space Up: Memory Management Previous: What is virtual memory?