Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

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

×