web-dev-qa-db-ja.com

カーネルにデバイスのコロケーションを認識させる

Linuxによってsdasdbとして表示される2つのボリュームで構成された大きなハードウェアRAID6アレイを備えたサーバーがあります(ええ、私は知っていますが、このように構成されたのはレンタルコロです、そして悲しいことに私はそれと一緒に暮らす必要があります)。

sdbを使用するI/O集約型のプロセスがあります。 ionice -c3を使用して実行しました。これは、他の何よりも優先度を低くしたいためです。残念ながら、ioniceは、2つのデバイスが実際に同じアレイの帯域幅を共有していることを認識していません。そのプロセスがビジー状態のとき、カーネルはsdbが静かであることを認識し、必要なすべての帯域幅を提供します。ただし、(私が理解しているように)sdaはデバイスごとに機能するため、これによりioniceが非常に遅くなる可能性があります。

カーネルにallデバイス間でディスクI/Oのバランスをとらせる方法はありますか?

7
Flup

何IOスケジューラーを使用していますか?

cat /sys/block/<disk>/queue/scheduler

実行しているものが表示されます。 noop(ほとんど先着順)、締め切り、CFQを試して、どれがあなたに適しているかを確認します。

CFQはRHEL/SUSEのデフォルトであり、Ubuntuの期限であり、誰もnoopではありません(ただし、Linuxがスケジュールのバランスを取るのではなく、バックエンドデバイスにスケジュールを処理させる必要があります。

2
TheFiddlerWins