Swap Space — Paging and Swapping

nfs • Network filesystem, widely used on all UNIX platforms rfs • Remote file share filesystem, typical for System V and barely in use autofs • Automount filesystem, an NIS−based automounted NFS filesystem Some of the listed types are barely in use, while others are widely used. This relatively long list also is not, by any means, a complete list. In this chapter we will discuss strictly local UNIX filesystems; network filesystems will be discussed separately. We mentioned earlier the swap partition and its crucial role on the UNIX platform. The swap partition definitely deserves more than this brief statement. A more detailed overview follows.

5.5.2 Swap Space — Paging and Swapping

UNIX systems require an appropriate swap space available for regular activities; otherwise, they cannot function normally and they crash immediately. The swap space is provided as a separate swap partition, and is sometimes several partitions for primary and additional swap partitions. UNIX systems use a virtual memory approach to access required programs and data. Virtual memory space consists of the physical memory space known as system memory and the corresponding disk space where programs and data actually reside. However, program execution and data processing are performed from the system memory only; therefore special techniques are required to provide the data needed from the system memory at the right time. This is the only task but it is an extremely difficult task of a specialized subsystem known as a memory management system MMS. This task is crucial for system performance. The system memory is continuously updated and synchronized with the disk, and programs and data are transferred in both directions. The transfer is performed in pages, and a page is the basic unit in the data transfer. In UNIX a part of the disk space is reserved as an extension of the system memory for temporary storage while the OS keeps track of processes that require more system memory than is available. This temporary depot is known as a swap space. When the OS recognizes the need, swap space is used for paging and swapping. Paging is when individual memory segments, or pages, are moved to or from the swap area in an ordered way. When free memory space is low, portions of processes primarily data segments within the process address space are moved into the swap space to free system memory. The data segments are selected to be moved if they have not been referenced recently different criteria can be implemented, but the most common is LRU — least recently used. When the running process tries to reference the data segment that has been transferred to the swap space, a page fault occurs and the process is suspended until the required data pages are returned into the system memory. A page fault occurs normally when a program is started for the first time; then the required pages must be brought from the disk. The swap space is mostly organized as a flat partition, which reduces the overhead and enables faster page transfer, both in and out. This is not a necessity, but it increases the transfer efficiency. However, the existence of a swap space is a requirement; the swap space can be thought of as an extension of the system memory, and there is no operating system to operate without a system memory. 130 Swapping occurs during a heavy workload, when memory shortage becomes critical, and the OS lacks the needed time to perform regular paging. When swapping, the kernel moves complete processes including all associated code and data segments to the swap area. The processes are chosen if they are not expected to run for a while. Unfortunately, it is often nearly impossible to make a perfect selection. When the process is run again it must be copied back into the system memory from the swap space. If such a transfer has to be performed repeatedly, the system performance drops sharply until the system stabilizes and continues with regular paging. The system simply spends more time doing process image and data transfer between the memory and swap areas than it spends running the same processes. While paging represents normal system activity, swapping is an undesired event. Performance−wise, it is preferable for swapping to never occur. Unfortunately, in real life such situations are unavoidable. The best way to prevent swapping is to increase the system memory. Today, huge system memory space is quite common and the need for swapping is drastically reduced; swapping happens only occasionally, or perhaps even never. The size of the swap space should be larger than the system memory. Theoretically, the need for swapping the complete system memory could arise. Therefore, if the system memory is upgraded, a new swap partition should also be added unless the primary swap partition has already been sized for future memory upgrades. The swap space is also used as a dump space. In an emergency the system could dump a complete memory image into the swap space known as a memory core. This is an additional reason to have a swap space larger than the memory itself. In the case of a dump space, the requirements are even greater: the available space must be contiguous — at a dump time no overhead is allowed, and the copying of the memory into the swap partition must be simple and fast. In this case, an additional swap partition does not work; only a contiguous increase of the existing primary partition helps. Unfortunately, this demand often cannot be met; a more painful yet realistic solution is to rebuild the complete system. Solaris 2.x went one step further by introducing the swapfs filesystem. Today, memory is not very expensive, and therefore huge system memory is not rare; new UNIX implementations frequently have GBs sized system memory. Under these circumstances, swap space can be expanded to include a part of the system memory besides the usual disk−based swap area. Then pages can be swapped from the system memory to the memory−based swap area, thereby actually staying within the system memory. The only question, then, is how the system would tell the difference between regular and swapped pages; this is the task of the swapfs filesystem. Anonymous swapped pages are named by swapfs and handled appropriately. There is no need for a literal copying of pages within memory; simply, pages stay where they were, but are marked as swapped. Swapped pages requested by the system are released for regular use. Therefore, everything happens as it would in typical swapping, except much, much faster; the system performance benefit is obvious. Please note that the phrases a swapped page and to swap a page do not necessarily refer to the swapping process; they have been also used to identify a page in the swap area and the process of 131 As the need for system memory increases, swapfs makes more space by backing swapped pages into the disk−based swap area swap partition. The worst−case scenario is a well−known swap structure: physical memory is used as system memory, and the swap area is restricted to the swap partition. As soon as more room has been made in the memory, a swap space can expand in that way. Such a flexible approach implies that all swap partitions, including the primary one, should be mounted through entries in the filesystem configuration file. Otherwise, there is no need for a default primary swap configuration entry; it is already well known to the system.

5.5.3 Loopback Virtual Filesystem