Den Kernel auf die Geräte-Colocation aufmerksam machen

7

Ich habe einen Server mit einem großen Hardware-RAID6-Array, das mit zwei Volumes konfiguriert wurde und von Linux als sdaund dargestellt wird sdb(ja, ich weiß, aber es ist ein gemietetes Colo, das auf diese Weise konfiguriert wurde, und leider muss ich damit leben).

Ich habe einen E / A-intensiven Prozess, der verwendet sdb. Ich bin mit gelaufen ionice -c3, weil ich möchte, dass es eine niedrigere Priorität hat als alles andere. Weiß leider ionicenicht, dass sich die beiden Geräte tatsächlich die Bandbreite des gleichen Arrays teilen. Wenn dieser Prozess beschäftigt ist, sieht der Kernel, dass er sdbleise ist, und gibt ihm die gesamte Bandbreite, die er benötigt. Dies kann jedoch sdasehr langsam sein, da (soweit ich es verstehe) ioniceauf Gerätebasis funktioniert.

Gibt es eine Möglichkeit, den Kernel dazu zu bringen, die Festplatten-E / A auf allen Geräten auszugleichen ?

Flup
quelle

Antworten:

2

Welchen IO-Scheduler verwenden Sie?

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

Es zeigt Ihnen, welches Sie ausführen. Ich würde Noop (das ist so ziemlich wer zuerst kommt, mahlt zuerst), Deadline und CFQ ausprobieren und herausfinden, was für Sie angemessen ist.

CFQ ist die Standardeinstellung für RHEL / SUSE, die Frist für Ubuntu und noop für niemanden (sollte jedoch das Backend-Gerät Ihre Planung übernehmen lassen, anstatt dass Linux versucht, sie auszugleichen.

TheFiddlerWins
quelle