WriteBack処理
Rev.3を表示中。最新版はこちら。
1. 概要
プロセスがファイルへの書き込みを行うと、カーネルは通常はページキャッシュ(ディスクキャッシュ)に書き込むだけで一旦処理を完了する(ディスクヘの書き込みは行わない)。このデータが書き込まれたページキャッシュは、ディスク上のデータと内容が不一致になっていることを示すためDirty状態になる。Dirty状態のページキャッシュはカーネルスレッドpdflushによって、遅延してディスクに書き込まれる。この処理をWriteBack処理と呼ぶ。
2. WriteBack処理の動作
2.1 WriteBack処理の起動
WriteBack処理はカーネルスレッドpdflushによって実行される。カーネルスレッドpdflushを起動するには、wakeup_pdflush()、balance_dirty_pages_ratelimited()が使われる(図1)。
wakeup_pdflush()はtry_to_free_pages()でメモリを解放しようとする際に、Dirtyページを書き出して解放可能なメモリを増やそうとして呼ばれる。
balance_dirty_pages_ratelimitd()は
図1 pdlushの起動
2.2 WriteBack処理
図2 WriteBack処理の流れ
図3 do_writepages()