Linuxによってsda
とsdb
として表示される2つのボリュームで構成された大きなハードウェアRAID6アレイを備えたサーバーがあります(ええ、私は知っていますが、このように構成されたのはレンタルコロです、そして悲しいことに私はそれと一緒に暮らす必要があります)。
sdb
を使用するI/O集約型のプロセスがあります。 ionice -c3
を使用して実行しました。これは、他の何よりも優先度を低くしたいためです。残念ながら、ionice
は、2つのデバイスが実際に同じアレイの帯域幅を共有していることを認識していません。そのプロセスがビジー状態のとき、カーネルはsdb
が静かであることを認識し、必要なすべての帯域幅を提供します。ただし、(私が理解しているように)sda
はデバイスごとに機能するため、これによりionice
が非常に遅くなる可能性があります。
カーネルにallデバイス間でディスクI/Oのバランスをとらせる方法はありますか?
何IOスケジューラーを使用していますか?
cat /sys/block/<disk>/queue/scheduler
実行しているものが表示されます。 noop(ほとんど先着順)、締め切り、CFQを試して、どれがあなたに適しているかを確認します。
CFQはRHEL/SUSEのデフォルトであり、Ubuntuの期限であり、誰もnoopではありません(ただし、Linuxがスケジュールのバランスを取るのではなく、バックエンドデバイスにスケジュールを処理させる必要があります。