Beziehung zwischen Platten-IOPS und SAR-TPS

13

Ich versuche, die IOPS-Anforderungen meiner Anwendung zu schätzen, die auf 32-Bit-CentOS 6.2 ausgeführt wird. Ich habe angefangen, auf einer Maschine mit SATA-Festplatten einige Messungen durchzuführen, und ich bin ziemlich verwirrt über den Unterschied zwischen IOPS und tps, gemessen von sar.

Laut Wikipedia soll die SATA-Festplatte 75-100 IOPS leisten. Das Dienstprogramm ioping scheint dies für den Direktzugriffstest zu bestätigen:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Aber die von sar erzeugten tps-Werte sind viel höher (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Es macht nichts aus, wenn diese Last sequentiell (dd mit verschiedenen Blockgrößen) oder zufällig (ioping) ist, der Wert ist immer noch der gleiche. Ich dachte, tps ist eigentlich IOPS und ich würde erwarten, dass es mit größeren übertragenen Stücken sinkt.

Was genau bedeutet der tps-Wert? Und in welcher Beziehung steht es zu IOPS?

Pystole
quelle
2
Ich glaube, Sie sehen höhere IOPS im TPS-Wert aufgrund des Festplatten-Cache.
ceejayoz
1
Ok, ich habe versucht, eine 10-GB-Datei über dd mit einem 256-KB-Block zu erstellen, um den Cache tatsächlich zu füllen, und nach ca. 90 Sekunden sinkt die Geschwindigkeit auf ca. 200, also haben Sie vielleicht Recht. Aber immer noch 80 und 200 sind ein ziemlicher Unterschied ... Ist es möglich, dass sich Lese- und Schreib-IOPS unterscheiden? Und gibt es eine Möglichkeit, die erforderlichen IOPS anhand dieses Werts zu ermitteln?
Pystole
1
Können Sie beschreiben, warum Sie IOPS suchen? read and write sind ein ganz anderes Paar Schuhe, die hier in den gleichen Topf geworfen werden.
Nils
Der Grund dafür ist, dass ich die Mindestanforderungen an die Hardware beschreiben muss. Ich habe einen Server, der Daten über das Netzwerk empfängt (wir können hier eine konstante Bitrate annehmen) und empfangene Daten auf die Festplatte schreibt. Die Daten werden nacheinander in Dateien geschrieben, es können jedoch auch Hunderte (z. B. 800) gleichzeitig vorhanden sein. Ich habe herausgefunden, dass ich anfange, große Iowaits zu bekommen, wenn die Anzahl der Kunden einen bestimmten Punkt erreicht. Der tatsächliche Datenträgerdurchsatz, den ich erreichen kann, liegt bei etwa 25 MB / s, was ziemlich niedrig ist. Weniger Clients mit einer höheren Bitrate können 35 MB / s ausführen, rein sequentiell bei etwa 130 MB / s. Also, ich denke, IOPS ist das, was hier zählt ...
Pystole

Antworten:

6

Transaktionen sind einzelne E / A-Befehle (Abrufblock / Schreibblock), die auf die RAW-Platte geschrieben werden (in Ihrem Beispiel dm-0). Der Linux-Kernel versucht, diese Befehle in eine bessere Reihenfolge zu bringen oder sie in effizientere Befehle zu komprimieren (wie: zwei Blöcke auf einmal anstatt einen Block zu bekommen und einen anderen Block direkt nach diesem zu bekommen). Dies sind die Transaktionen, die an den Festplattencontroller gesendet werden (tps für sda).

Gute Controller haben eine eigene Logik, die die tatsächliche Anzahl der Transaktionen weiter reduziert.

Eine Transaktion könnte der SCSI-Befehl "Write 2 GB to Crontoller 1 Target 2 Lun 3 ab Sektor 22) sein. Wie Sie sehen, kann dies nicht in direkten Zusammenhang mit Durchsatzzahlen gebracht werden.

Was Sie suchen, ist die anhaltende Schreibrate. Hier gibt es einige einschränkende Faktoren:

  • Client-Verbindung: Wenn das Netzwerk Gigabit ist, haben Sie nie mehr als 100 MB / s Eingang
  • Platten-Controller: Wenn dies ein 3-Gbit-Controller ist, haben Sie niemals einen Durchsatz von mehr als 300 MB / s
  • Festplatte: Suchen Sie nach dem Herstellerwert für eine dauerhafte Schreibleistung
  • Dateisystem: Da das Betriebssystem Daten verarbeiten muss, entsteht ein geringer Overhead - testen Sie dies auf einer RAM-Disk ...

Ich vermute für Ihr System: Besorgen Sie sich einen guten Hardware-Raid-Controller, der Raid 10 oder 5 ausführen kann, und besorgen Sie sich mindestens 6 schnelle (15k) Festplatten.

Verwenden Sie für den professionellen Einsatz SAS anstelle von SATA.

Nils
quelle
OK, Sie haben Recht, IOPS macht für Schreibvorgänge keinen Sinn, da es viele Caches, Neuanordnungen und Zusammenführungen gibt. Schließen ... Danke.
Pystole
5

Beachten Sie auch, dass der TPSWert Lese- und Schreibvorgänge darstellt. Sie können den -xSchalter für die erweiterte Ansicht verwenden, wenn Lese- und Schreibvorgänge getrennt sind (r / s = Lese-IOPS, w / s = Schreib-IOPS):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89
HTF
quelle
Ja, du hast recht. Aber in meinem Fall gibt es fast 100% der Schreibvorgänge, Lesevorgänge sind fast keine.
Pystole