pdflush
Rev.3を表示中。最新版はこちら。
1. 概要
pdflushはページキャッシュ(ディスクキャッシュ)上のDirtyページをディスクへ書き戻す(WriteBack)のに使われるカーネルスレッド。
2. 構造
pdflushの構造は図1のようになっている。
図1 pdflushの構造
3. 解説
3.1 pdflush
pdflushの処理のメインは__pdflush()。__pdflush()では、pdflush_operation()によりジョブが投入されてWakeupされると、自分のジョブ管理用構造体struct pdflush_workから登録されているジョブの処理ルーチン(.fn)を呼び出して、WriteBack処理を行う。処理が終わるとまたSleepする。
pdflushカーネルスレッドはシステム内に複数個存在する。スレッド数はWriteBackの処理量に応じてMIN_PDFLUSH_THREADS(2)〜MAX_PDFLUSH_THREADS(8)の間で自動で調整される。このスレッド数の調整も__pdflush()で行われている。
各pdflushは自分のWriteBackジョブを管理するためにstruct pdflush_workを1つ持っている(my_workポインタの先)。Sleepしているpdflushのpdflush_workはpdflush_listにチェーンされている。