Upload
narimichi-takamura
View
16.907
Download
12
Embed Size (px)
Citation preview
【続編】その IONICE 、 ほんとに効いてますか?
株式会社ハートビーツ@nari_ex高村成道
おさらい
ionice は以下の2条件を満たした時にちゃんと動く
I/O Scheduler が CFQ
特定のI/O処理
キャッシュされていないファイルへのRead
特殊フラグの立った Write
ん、なんで(・へ・)?
CFQ じゃないと効かない理由
VFS
カーネル空間
システムコール
ユーザ空間
物理 デバイス
ファイルシステム
ディスクキャッシュ
汎用ブロック層
物理 デバイス
プロセス
I/O スケジューラ
デバイスドライバ
デバイスドライバ
I/O スケジューラ
I/O スケジューラ概要
I/O
I/O スケジューラのサブキューに注目
結論: CFQ 以外、優先度を考慮して
実装されてない
代表的なI/Oスケジューラ
• NOOP
• DEADLINE
• CFQ(Completely Fair Queuing)
NOOP I/O スケジューラ
• 要求をディスパッチキューに突っ込むだけ
• No Operation
NOOP I/O スケジューラ
I/O
全部入りのFIFOキューがあるだけ
DEADLINE I/O スケジューラ
• ReadとWriteでキューが別
• Read 優先
• 期限(deadline)付きキューが特徴
• 期限が切れた要求は最優先で処理する
DEADLINE I/O スケジューラ
I/O
READ と WRITE のキューがあるだけ
CFQ I/O スケジューラ• プロセスごとにサブキューを用意
• 優先度を考慮してキューごとの処理時間を決定
• 1つのサブキューをアクティブキューとして、そのキュー内の要求を処理時間の範囲で処理する
• 処理時間が終わるとアクティブキューが切り替わる
CFQ I/O スケジューラプロセスごとにキューがある
I/O
…"
CFQ I/O スケジューラ
I/O
…"
アクティブになったキューにある要求が処理される
低優先度プロセスのサブキューはアクティブになかなかならない && なってもすぐにスタンバイになる
特定のI/Oじゃないと効かない理由
ディスクキャッシュの効いたREAD
プロセス空間 ディスクキャッシュ 物理デバイス
ディスクキャッシュの データを返す
ディスクキャッシュのないREAD
プロセス空間 ディスクキャッシュ 物理デバイス
ディスクキャッシュのないREAD
プロセス空間 ディスクキャッシュ 物理デバイス
ディスクキャッシュ作成 ディスクキャッシュの データを返す
普通のWRITE(遅延 WRITE)プロセス空間 ディスクキャッシュ 物理デバイス
後で書き込み ディスクキャッシュに コピーをして終了
普通のWRITE(遅延 WRITE)プロセス空間 ディスクキャッシュ 物理デバイス
後で書き込み ディスクキャッシュに コピーをして終了
誰がやるの?
定期的にLINUX カーネルが書き込んでます。※だから IONICE が効かない
定期的な同期処理
特殊なフラグの立ったI/O
プロセス空間 ディスクキャッシュ 物理デバイス
キャッシュを経由せず 直接デバイスに読み書きする
質問コーナー