Linux Kernel Architecture

(Jacob Rumans) #1

Data Synchronization


RAM memory and hard disk space are mutually interchangeable to a good extent. If a large amount
of RAM is free, the kernel uses part of it to buffer block device data. Conversely, disk space is used to
swap data out from memory if too little RAM is available. Both have one thing in common — data
are always manipulated in RAM before being written back (or flushed) to disk at some random
time to make changes persistent. In this context,block storage devices are often referred to as RAM
backing store.

Linux provides a variety of caching methods as discussed extensively in Chapter 16. However,
what was not discussed in that chapter is how data are written back from cache. Again, the kernel
provides several options that are grouped into two categories:


  1. Background threads repeatedly check the state of system memory and write data
    back at periodic intervals.

  2. Explicit flushing is performed when there are too many dirty pages in system caches
    and the kernel needs clean pages.


This chapter discusses these techniques.

17.1 Overview


There is a clear relationship betweenflushing,swapping,andreleasingpages. Not only the state
of memory pages but also the size of free memory needs checking regularly. When this is done,
unused or seldom used pages are swapped out automatically but not before the data they hold
have been synchronized with the backing store to prevent data loss. In the case of dynamically
generated pages, the system swap areas act as the backing stores. The swap areas for pages mapped
from files are the corresponding sections in the underlying filesystems. If there is an acute scarcity
of memory, flushing of dirty data must be enforced in order to obtain clean pages.
Free download pdf