Linux Kernel(2.6)の実装に関するメモ書き

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にチェーンされている。

3.2 pdflushのWakeup

pdflushへのジョブの投入はpdflush_operation()で行う。


最終更新 2007/05/31 12:13:31 - kztomita
(2007/05/31 11:58:44 作成)
添付ファイル
pdflush.png - kztomita


リンク
最近更新したページ
検索