私はしばらくの間ionice
コマンドをテストしてきましたが、idle
(3)モードはほとんどの場合無視されているようです。
私のテストは、両方のコマンドを同時に実行することです。
<big folder>
<another big folder>
iotop
で両方のプロセスを確認すると、各プロセスのio使用率に違いは見られません。
CFQスケジューラに関する詳細情報を提供するために、3.5.0Linuxカーネルを使用しています。
Ubuntu12.10マシンで毎日のcronジョブupdatedb.mlocate
が実行されるたびにシステムラグを実験しているため、このテストを開始しました。
/etc/cron.daily/mlocate
ファイルを確認すると、コマンドが次のように実行されていることがわかります。
/usr/bin/ionice -c3 /usr/bin/updatedb.mlocate
また、面白いことに、システムが何らかの理由でスワップメモリの使用を開始すると、updatedb.mlocate
ioプロセスがkswapd0
プロセスよりも速くスケジュールされ、システムがスタックします。
いくつかの提案?
参照:
ionice
は、CFQカーネルスケジューラを使用している場合にのみ機能します。ディストリビューションはデフォルトでdeadline
スケジューラーになっているようです。
見る /sys/block/xvdh/queue/scheduler
有効にしたものを確認します。角括弧内のものです。
これは予想される動作だと思います。少なくとも、両方のプロセスのI/Oシェアが100%に近い場合はそうです。わずかな違いがあるはずですが、100%が限界であり、すでに96%になっている場合は、I/Oの半分だけを取得すると98%になります。大きな問題ではない。
絶対伝達値には重大な違いが見られるはずです。この違いは、CPUの優先度にも依存する可能性があります。
I/O prio idleは、システムがまったく影響を受けないことを意味するわけではありません。非アイドルプロセスが使用可能なI/O全体を消費しない場合、prioアイドルプロセスもI/O帯域幅を取得します。したがって、非アイドルprioアプリケーションがI/Oを要求し、次のスロットを取得することが非常に頻繁に発生する可能性がありますが、アイドルprioプロセスに対して実行されているIOPがあるため、レイテンシーが増加します。プロセスが引き起こすI/Oが少ないほど、アイドル状態のprioプロセスがプロセスに与える影響は大きくなります。したがって、cronプロセスのCPU優先度を下げるのに役立つ可能性があります(おそらくそれをSCHED_IDLEにすることさえあります)。
しかし、スワップの問題についてはわかりません。