Библиотека сайта rus-linux.net
The book is available and called simply "Understanding The Linux Virtual Memory Manager". There is a lot of additional material in the book that is not available here, including details on later 2.4 kernels, introductions to 2.6, a whole new chapter on the shared memory filesystem, coverage of TLB management, a lot more code commentary, countless other additions and clarifications and a CD with lots of cool stuff on it. This material (although now dated and lacking in comparison to the book) will remain available although I obviously encourge you to buy the book from your favourite book store :-) . As the book is under the Bruce Perens Open Book Series, it will be available 90 days after appearing on the book shelves which means it is not available right now. When it is available, it will be downloadable from http://www.phptr.com/perens so check there for more information.
To be fully clear, this webpage is not the actual book.
Next: 11.1 Pageout Daemon (kswapd) Up: understand-html Previous: 10.5 Emergency Pools   Contents   Index
A running system will eventually use all page frames for purposes like disk buffers, dentries, inode entries and process pages and so Linux needs to select old pages which can be freed and invalidated for new uses before physical memory is exhausted. This chapter will focus exclusively on how Linux implements its page replacement policy and how different types of pages are invalidated.
The methods Linux uses to select pages is rather empirical in nature and the theory behind the approach is based on multiple different ideas. It has been shown to work well in practice and adjustments are made based on user feedback and benchmarks.
With the exception of the slab allocator, all pages in use by
the system are stored on the page cache and linked together via the
lru so they can be easily scanned for replacement. The
slab pages are not stored within the page cache as it is considerably more
difficult to age a page based on the objects used by the slab.
Process mapped pages are not easily swappable as there is no way to map
struct pages to PTEs except to search every page table which
is far too expensive. If the page cache has a large number of process
pages in it, process page tables will be walked and pages swapped out by
swap_out() until enough pages have been freed but this will
still have trouble with shared pages. If a page is shared, a swap entry
is allocated, the PTE filled with the necessary information to find the
page again and the reference count decremented. Only when the count reaches
zero will the page be actually swapped out. These types of shared pages are
considered to be in the swap cache.
This chapter begins with the pageout daemon kswapd and what its task is. From there we introduce the page replacement policy that Linux implements before an in-depth discussion on the Page Cache which is the core structure which determines how pages are removed from memory. Finally we cover how pages mapped by processes, which have to be treated specially, are swapped out.
- 11.1 Pageout Daemon (kswapd)
- 11.2 Page Cache
- 11.3 Manipulating the Page Cache
- 11.3.1 Adding Pages to the Page Cache
- 11.3.2 Refilling
- 11.3.3 Reclaiming Pages from the Page Cache
- 11.4 Shrinking all caches
- 11.5 Swapping Out Process Pages
- 11.6 Page Replacement Policy
Next: 11.1 Pageout Daemon (kswapd) Up: understand-html Previous: 10.5 Emergency Pools   Contents   Index Mel 2004-02-15