26
【続編】その IONICE ほんとに効いてますか? 株式会社ハートビーツ @nari_ex 高村成道

【続編】その ionice、ほんとに効いてますか?

Embed Size (px)

Citation preview

Page 1: 【続編】その ionice、ほんとに効いてますか?

【続編】その IONICE 、 ほんとに効いてますか?

株式会社ハートビーツ@nari_ex高村成道

Page 2: 【続編】その ionice、ほんとに効いてますか?

おさらい

ionice は以下の2条件を満たした時にちゃんと動く

I/O Scheduler が CFQ

特定のI/O処理

キャッシュされていないファイルへのRead

特殊フラグの立った Write

Page 3: 【続編】その ionice、ほんとに効いてますか?

ん、なんで(・へ・)?

Page 4: 【続編】その ionice、ほんとに効いてますか?

CFQ じゃないと効かない理由

Page 5: 【続編】その ionice、ほんとに効いてますか?

VFS

カーネル空間

システムコール

ユーザ空間

物理 デバイス

ファイルシステム

ディスクキャッシュ

汎用ブロック層

物理 デバイス

プロセス

I/O スケジューラ

デバイスドライバ

デバイスドライバ

I/O スケジューラ

Page 6: 【続編】その ionice、ほんとに効いてますか?

I/O スケジューラ概要

I/O

Page 7: 【続編】その ionice、ほんとに効いてますか?

I/O スケジューラのサブキューに注目

Page 8: 【続編】その ionice、ほんとに効いてますか?

結論: CFQ 以外、優先度を考慮して

実装されてない

Page 9: 【続編】その ionice、ほんとに効いてますか?

代表的なI/Oスケジューラ

• NOOP

• DEADLINE

• CFQ(Completely Fair Queuing)

Page 10: 【続編】その ionice、ほんとに効いてますか?

NOOP I/O スケジューラ

• 要求をディスパッチキューに突っ込むだけ

• No Operation

Page 11: 【続編】その ionice、ほんとに効いてますか?

NOOP I/O スケジューラ

I/O

全部入りのFIFOキューがあるだけ

Page 12: 【続編】その ionice、ほんとに効いてますか?

DEADLINE I/O スケジューラ

• ReadとWriteでキューが別

• Read 優先

• 期限(deadline)付きキューが特徴

• 期限が切れた要求は最優先で処理する

Page 13: 【続編】その ionice、ほんとに効いてますか?

DEADLINE I/O スケジューラ

I/O

READ と WRITE のキューがあるだけ

Page 14: 【続編】その ionice、ほんとに効いてますか?

CFQ I/O スケジューラ• プロセスごとにサブキューを用意

• 優先度を考慮してキューごとの処理時間を決定

• 1つのサブキューをアクティブキューとして、そのキュー内の要求を処理時間の範囲で処理する

• 処理時間が終わるとアクティブキューが切り替わる

Page 15: 【続編】その ionice、ほんとに効いてますか?

CFQ I/O スケジューラプロセスごとにキューがある

I/O

…"

Page 16: 【続編】その ionice、ほんとに効いてますか?

CFQ I/O スケジューラ

I/O

…"

アクティブになったキューにある要求が処理される

低優先度プロセスのサブキューはアクティブになかなかならない && なってもすぐにスタンバイになる

Page 17: 【続編】その ionice、ほんとに効いてますか?

特定のI/Oじゃないと効かない理由

Page 18: 【続編】その ionice、ほんとに効いてますか?

ディスクキャッシュの効いたREAD

プロセス空間 ディスクキャッシュ 物理デバイス

ディスクキャッシュの データを返す

Page 19: 【続編】その ionice、ほんとに効いてますか?

ディスクキャッシュのないREAD

プロセス空間 ディスクキャッシュ 物理デバイス

Page 20: 【続編】その ionice、ほんとに効いてますか?

ディスクキャッシュのないREAD

プロセス空間 ディスクキャッシュ 物理デバイス

ディスクキャッシュ作成 ディスクキャッシュの データを返す

Page 21: 【続編】その ionice、ほんとに効いてますか?

普通のWRITE(遅延 WRITE)プロセス空間 ディスクキャッシュ 物理デバイス

後で書き込み ディスクキャッシュに コピーをして終了

Page 22: 【続編】その ionice、ほんとに効いてますか?

普通のWRITE(遅延 WRITE)プロセス空間 ディスクキャッシュ 物理デバイス

後で書き込み ディスクキャッシュに コピーをして終了

誰がやるの?

Page 23: 【続編】その ionice、ほんとに効いてますか?

定期的にLINUX カーネルが書き込んでます。※だから IONICE が効かない

Page 24: 【続編】その ionice、ほんとに効いてますか?

定期的な同期処理

Page 25: 【続編】その ionice、ほんとに効いてますか?

特殊なフラグの立ったI/O

プロセス空間 ディスクキャッシュ 物理デバイス

キャッシュを経由せず 直接デバイスに読み書きする

Page 26: 【続編】その ionice、ほんとに効いてますか?

質問コーナー