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

×