Does Linux have a page file?

Tomer Schweid picture Tomer Schweid · Jan 28, 2016 · Viewed 11.2k times · Source

I found at several places that Linux uses pages and a paging mechanism but I didn't find anywhere where this file is or how to configure it.

All the information I found is about the Linux swap file / partition. There is a difference between paging and swapping:

Paging moves pages (a small frame which contains a piece of data - usually 4 KB but can vary between different OS's) from main memory to a backbend storage, happens always as a normal function of the operating system. Swapping moves an entire process to storage and happens when the system is memory stressed or on windows 8 when a new application is hibernating.

Does Linux uses it's swap file / partition for both cases? If so, how could I see how many page are currently paged out? This information is not there in vmstat, free or swapon commands (or that I fail to see it).

Or is there another file used for paging? If so, how can I configure it (and watch it's usage)?

Or perhaps Linux does not use paging at all and I was mislead?

I would appreciate if the answers will be specific to red hat enterprise Linux both versions 6 and 7 but also a general answer about all Linux's will be good.

Thanks in advance.

Answer

rici picture rici · Jan 28, 2016

On Linux, the swap partition(s) are used for paging.

Linux does not respond to memory pressure by swapping out whole processes. The virtual memory system does demand paging, page by page. Under extreme memory pressure, one or more processes will be killed by the OOM killer. (There are some useful links to documentation in the first NOTE in man malloc)

There is a line in the top header which shows swap partition usage, but if that is all the information you want, use

swapon -s

man swapon for more information.

The swap partition usage is not the same as the number of unmapped pages. A page might be memory-mapped to a file using the mmap call; since that page has backing store in the file, there is no need to also write it to a swap partition, and the system won't use swap space for that. But swap partition usage is a pretty good indicator.

Also note that Linux (unlike Windows) does not allocate swap space for pages when they are allocated. Instead, it adds the new page to the virtual memory map without any backing store. and allocates the swap space when the page needs to be swapped out. The consequence (as described in the malloc manpage referenced earlier) is that a malloc call may succeed in allocating virtual memory, but a subsequent attempt to use that virtual memory may fail.