As we shall see later, when freeing memory, the kernel swaps out many pages in a short period of time. It is therefore important to try to store these pages in contiguous slots to minimize disk seek time when accessing the swap area.
A first approach to an algorithm that searches for a free slot could choose one of two simplistic, rather extreme strategies:
• Always start from the beginning of the swap area. This approach may increase the average seek time during swap-out operations because free page slots may be scattered far away from one another.
• Always start from the last allocated page slot. This approach increases the average seek time during swap-in operations if the swap area is mostly free (as is usually the case) because the handful of occupied page slots may be scattered far away from one another.
Linux adopts a hybrid approach. It always starts from the last allocated page slot unless one of these conditions occurs:
• The end of the swap area is reached
• swapfile_cluster (usually 256) free page slots were allocated after the last restart from the beginning of the swap area
The cluster_nr field in the swap_info_struct descriptor stores the number of free page slots allocated. This field is reset to 0 when the function restarts allocation from the beginning of the swap area. The cluster_next field stores the index of the first page slot to be examined in the next allocation. 
Was this article helpful?