Hallo zusammen,
mir ist bei einem unserer Root-Server (S 8000 G7) aufgefallen, dass während des Backups die IOPs stark eingebrochen sind. Eine genaue Analyse hat gezeigt, dass die IOPs offenbar gedrosselt werden. Ich habe Verständnis dafür, dass die Server vor Überlast geschützt werden müssen. Keinerlei Verständnis habe ich jedoch dafür, auf welche Art und Weise dies geschieht und wie es kommuniziert wird.
Der Support hat, von mir darauf angesprochen, zunächst abgestritten, dass überhaupt gedrosselt wird. Von der Technik kam dann die Aussage, dass es keine festen Limits gibt und es sein kann, dass bei längerer Auslastung ggf. limitiert wird.
Dies habe ich zum Anlass genommen, ein paar Messungen durchzuführen.
Messung auf S 8000 G7, wenige Tage alt.
Beim linearen lesen mit 1 MB Blöcken (also keine Random-IO-Operationen) mit "dd if=/dev/sda of=/dev/null bs=1M" wird mit 200 MB/s gelesen. Dies erzeugt auf dem System 1600 IOPs. Das bedeutet eine I/O-Blockgröße von 128kb. Die IOPs scheinen auf allen S 8000 G7 auf 1600 limitiert zu sein.
Nach ca. 10 Minuten werden die IOPs auf 200 gedrosselt. Durch die Blockgröße von 128k bedeutet das eine Transferrate von 25MB/s.
Gedrosselt wird nicht nur, wenn die 1600 IOPs ausgelastet werden sondern sobald längere Zeit mit mehr als 200 IOPs bzw. mehr als 25MB/s gelesen werden. Das bedeutet, dass eine maximale Dauertransferrate von 25MB/s auf den Systemen nicht überschritten werden kann.
Damit dauert es über 116 Stunden, ein Vollbackup eines S 8000 G7 durchzuführen.
Für einen neu bestellten RS 4000 SAS G8SE a1 beträgt das initiale Limit 2000 IOPs / 250 MB/s, gedrosselt wird nach 10 Minuten I/O-Last auf 250 IOPs und 30 MB/s.
Auf mehreren älteren S 8000 G7 unterliegt die I/O Rate erheblichen Schwankungen zwischen 40 und 1600 IOPs, war jedoch im Mittel dauerhaft geringer als die 200 IOPs, so das ich nicht verifizieren konnte, ob auf den alten Systemen auch schon gedrosselt wird. Ich vermute, das die entsprechenden Hostsysteme recht stark ausgelastet sind.
Die reinen IOPs sind nicht das Problem (200 IOPs sind für SAS-Systeme sehr gut), jedoch ist die Transferrate, welche durch die 128k Blockgröße erzielt wird ein absolutes No-Go. Zum Vergleich: eine 2,5" Notebook-Platte (ST1000LM024) ließt sequentiell um die 115 MB/s bei 160 IOPs.
Ich bin der Meinung, dass eine solche Drosselung eine erhebliche Beeinträchtigung des Produktes darstellt und mindestens als Bestandteil der Produktbeschreibung offen kommuniziert werden muss. So kann jeder selbst entscheiden, ob ein Storage-Server, der dauerhaft nur 25 MB/s lesen kann für seinen Anwendungszweck tauglich ist.
Ich würde mich über ein klares Statement seitens Netcup bezüglich IOPs, Transferraten und Drosselung freuen.
Viele Grüße,
Michael.
PS: auf einem einzelnen S 8000 G7 habe ich in der Spitze eine sequenzielle Transferrate von 340 MB/s bei ca. 680 IOPs gemessen, was eine I/O-Blockgröße von 512k hinweist. Das zeigt, dass eine sinnvolle Balance zwischen IOPs und Transferrate technisch zumindest möglich ist.
PPS: Die Messungen auf den beiden neuen Systemen erfolgten aus dem Rescue-System heraus indem mit "dd if=/dev/sda of=/dev/null bs=1M" sequenzielle reads erzeugt und mit "iostat -x 1" die I/O-Statistiken ausgegeben wurden.