More Related Content
Similar to その ionice、ほんとに効いてますか? (19)
More from Narimichi Takamura (10)
その ionice、ほんとに効いてますか?
- 2. WHAT IS IONICE ?
• I/O の処理優先度を指定するLinuxコマンド
• nice コマンドの I/O バージョン
• nice コマンドでは I/O 優先度を制御不可
- 3. I/O 優先度クラス
• RT ( Real-time )
• 最高優先度
• BE ( Best-Effort )
• デフォルト優先度
• Idle
• 最低優先度
- 4. BE: クラス内優先度
• BE クラスのみ、クラス内優先度がある
• 優先度は 0~7 までの 8段階
• 0が最高優先度、7が最低優先度
• 優先度はクラスの枠を超えない
• RT > BE (0)
• IDLE < BE (7)
- 5. BE: クラス内優先度
• BE クラスのみ、クラス内優先度がある
• 優先度は 0~7 までの 8段階
• 0が最高優先度、7が最低優先度
• 優先度はクラスの枠を超えない
• RT < BE (0)
• IDLE < BE (7)
- 6. HOW TO IONICE
• RT クラスを指定: ionice -c1
• BE クラスを指定: ionice -c2 -n <0~7>
• IDLE クラスを指定: ionice -c3
- 7. 余談: NICE コマンド
• クラスはない
• 優先度 ( nice値 ) は -20~19
• -20 が最高優先度、19が最低優先度
- 16. IONICE が効く条件
• I/O スケジューラ
• Readなの?Writeなの?フラグは?
• ファイル作成フラグ
• キャッシュの有無
- 18. ユーザ空間
VFS “ここに引用を入力してください。”
–Johnny Appleseed
カーネル空間
システムコール
物理
デバイス
ファイルシステム
ディスクキャッシュ
汎用ブロック層
物理
デバイス
プロセス
I/O スケジューラ層
デバイス
ドライバ
デバイス
ドライバ
- 19. 条件その1: I/O SCHEDULER(1)
• CFQ スケジューラ以外は無理
• Linux 標準のスケジューラは CFQ
• Amazon Linux は Noop なので注意
• Unbreakable Linux は Deadline なので注意
- 20. 条件その1: I/O SCHEDULER(2)
• デバイスひとつにI/Oスケジューラひとつ
• デバイスをまたぐ処理の場合に注意
• 処理に関わるすべてのデバイスを確認せよ
• # cat /sys/block/<DEV_NAME>/queue/
scheduler
- 21. 条件その2: I/O処理の内容(1)
• Write() は基本的に効かない
• O_DIRECT, O_SYNC をフラグ立ててればOK
• -o sync でマウントされたファイルシステムならOK
- 23. まとめ
• ionice は以下の 2条件を満たした時にちゃんと動く
• I/O Scheduler が CFQ
• 特定のI/O処理
• キャッシュされていないファイルへのRead
• 特殊フラグの立った Write
- 24. さいごに
• man ioprio_set を読もう
• ファイル作成フラグの細かいことはまた今度
• O_SYNC, O_DSYNC, O_FSYNC…
• ionice -p <PID> を使うと、起動中のプロセスのI/O優
先度変更できるよ