Performance Probleme mit HyperV ISCSI

  • Hallo zusammen,


    ich habe hier eine kleine Umgebung die mir seit Beginn Kopfschmerzen bereitet.
    Es handelt sich um eine Virtualisierungslösung.


    Ich habe eine Qnap TS1279U-RP (Intel i3, 4gb RAM) mit folgender Festplattenkonfig:
    5 x Festplatten Seagate ST3000NC00 (4 TB) Raid 5
    6 x Seagate ST5000NM0024 (5 TB) Raid 6
    1 x SSD alsRead Chache für die ISCSI LUNS


    Die HDDs im Raid5 bilden den SMB Share für Netzwerkordner. Da hab ich ganz normale Performance.
    Die HDDs im Raid6 bilden den Speicherpool für die HyperV 2008r2 Luns.
    Ich weiß das das Raid6 nicht optimal ist, aber ich kann mir nicht vorstellen das es die Erklärung für die schlechte Performance ist.


    Als Hypervisor arbeitet ein HP ProLiant DL360 G8 Server mit 2 x Xeon Prozessoren und insgesamt 64GB Ram.
    Angeschlossen sind QNAP und HP Server direkt per 10gbe DAC. Die Clients die per SMB auf die QNAP zugreifen, greifen über die 1Gb Nic zu. Die beiden Netze sind in verschiedenen IP Subnetzen.
    Insgesamt sind 10 HyperV Guests auf dem Hypervisor eingerichtet. Jeder Guest hat dabei seine eigene LUN auf der Qnap.


    Das eigentliche Problem ist die schlechte Performance der HyperV Guests. Datenbank Applikationen laufen derart langsam, das an eine produktive arbeit nicht zu denken ist. Wenn alle Guests runtergefahren werden und gleichzeitig gestartet werden, dauert das mindestens 60 Minuten bis alle Dienste auf allen Servern aktiv sind.
    Ich weiß auch das Qnap und HyperV 2008r2 nicht zertifiziert ist, aber dennoch als kompatibles Produkt aufgeführt wird.


    Ich habe auch bereits einige Test gefahren. Folgende Werte kann ich euch bereitstellen:


    Der Datentransfer zwischen Hypervisor und Qnap Luns ist ok. Wenn ich große Dateien kopiere komme ich auf knapp 200MB/s.


    iperf zwischen Hypervisor und Qnap gibt mir 5.31Gbits/sec wieder
    iperf zwischen Guest und Qnap nur 900Mbits/sec. Wobei das wohl daran liegen dürfte, das der Guest die 1Gbe Kupfer Leitung nutzt. Das dürfte ja aber egal sein, denn das Speichern per ISCSI sollte ja der Hypervisor machen, oder irre ich mich da?


    Diskspeed vom Hypervisor auf die Qnap Luns bringen relativ schlechte Ergebnisse. Ganz komisch ist die extrem hohe Lat. beim WriteIO
    diskspd.exe -c512M -d60 -r -w30 -b8k -t4 -o8 -h -L r:\Test.dat (vollständiges Ergebnis im Anhang)


    thread | bytes | I/Os | MB/s | I/O per s | AvgLat | LatStdDev | file
    -----------------------------------------------------------------------------------------------------
    0 | 21159936 | 2583 | 0.34 | 43.04 | 19.596 | 69.381 | r:\Test.dat (512MB)
    1 | 21200896 | 2588 | 0.34 | 43.13 | 21.035 | 70.132 | r:\Test.dat (512MB)
    2 | 20946944 | 2557 | 0.33 | 42.61 | 21.671 | 73.705 | r:\Test.dat (512MB)
    3 | 20840448 | 2544 | 0.33 | 42.39 | 21.308 | 69.562 | r:\Test.dat (512MB)
    -----------------------------------------------------------------------------------------------------
    total: 84148224 | 10272 | 1.34 | 171.17 | 20.899 | 70.718


    Write IO
    thread | bytes | I/Os | MB/s | I/O per s | AvgLat | LatStdDev | file
    -----------------------------------------------------------------------------------------------------
    0 | 9019392 | 1101 | 0.14 | 18.35 | 390.876 | 188.754 | r:\Test.dat (512MB)
    1 | 8962048 | 1094 | 0.14 | 18.23 | 389.788 | 180.805 | r:\Test.dat (512MB)
    2 | 8806400 | 1075 | 0.14 | 17.91 | 395.749 | 190.953 | r:\Test.dat (512MB)
    3 | 8724480 | 1065 | 0.14 | 17.75 | 400.936 | 186.989 | r:\Test.dat (512MB)
    -----------------------------------------------------------------------------------------------------
    total: 35512320 | 4335 | 0.56 | 72.24 | 394.281 | 186.950


    und Iometer (60%Rand-65%Read) bringt folgende Werte zum Vorschein:
    IOps 248.692.200 | Read IOps 161.311.604 | Write IOps 87.380.596 | MiBps (Binary) 1.942.908
    Read MiBps (Binary) 1.260.247 | Write MiBps (Binary) 0.682661 | MBps (Decimal) 2.037.287
    Read MBps (Decimal) 1.321.465 |Write MBps (Decimal) 0.715822|Transactions per Second 248.692.200 |
    Connections per Second |0.497391 | Average Response Time 237.952.690 |Average Read Response Time 239.224.623
    Average Write Response Time 235.604.600 | Average Transaction Time 237.952.690


    Ich hoffe wirklich ihr seht einen Fehler oder Verbesserungspunkt.

  • Hallo,


    Raid 6...10VMs...Datenbanken. Ohne die Auslastung der VMs zu kennen würde ich hier immer zu einem Raid 10 greifen. Vereinfacht ausgedrückt und technisch nicht 100%ig korrekt rödeln 10 VMs auf 4 HDDs rum und dabei ist der Schreibmalus des Raid 6 noch nicht berücksichtigt.

  • Das stimmt wohl, denn korrekt wäre das diese Maschinen auf 6 HDDs "rödeln", auch wenn rechnerisch der Platz von 2 Platten nicht nutzbar ist.
    Alle Paritäten sind schließlich auf allen Platten verteilt, daher wird auch auf allen gelesen bzw. geschrieben, was doch noch recht gut gehen sollte.


    Schätze mal das der Durchsatz gut sein sollte, es fehlt die Angabe welche Paketgrößen hier konfiguriert wurden.
    Jumboframes machen bei einem iSCSI Netzwerk durchaus sinn, vorallem bei Anbindungen über 1 Gbe.


    Zweiteres sind sicherlich die Zugriffszeiten, denn die Platten sind gar nicht für den Zweck gedacht, was sicherlich bekannt ist?
    Ein Test ergibt dass die Platten eine Reaktionszeit von ca. 9.15 ms beim schreiben und 12.51 ms beim lesen haben, das ist ziemlich hoch.


    Nun auf RAID10 zu wechseln wäre ein Möglichkeit, allerdings bleiben die Platten langsam. Das sollte also höchstens höhere Durchsätze bringen.
    Ob dort Zugriffe viel schneller von statten laufen ... kann ich mir nicht vorstellen, das dürfte spürbar wenig bis gar nichts ausmachen.
    Evtl. hilft es den Readcache auf einen Read/Write Cache zu erweitern, sprich eine zweite SSD zum Cachen einzubauen, das hilft aber nur gering.


    Also, mehrere Möglichkeiten die am Storage selbst umsetzbar sind, von günstig/kostenfrei zu teuer:


    1) Jumboframes aktivieren, vorher benchen welche Framegröße am meisten bringt
    2) Read/Write Cache einsetzen => zweite SSD hinzufügen
    3) Ggfls. RAID10 "ausprobieren" => bei Produktivumgebungen evtl. eher nicht so einfach/gar nicht umzusetzen
    4) Passende Festplatten einbauen => bspw. ST1000NM0033 (Constellation ES.3 mit ca. 4.16 ms Reaktionszeit)
    5) RAID5 aus SSDs hinzufügen bzw. auf SSDs migrieren


    Ansonsten kann ich nur sagen das dort eher eine QNAP mit SAS Unterstützung gepasst hätte, denn das wäre ein Einsatzfeld für SAS.
    Gerade mit 15K Platten hätte man dort sehr hohe Durchsätze mit sehr geringen Reaktionszeiten hinbekommen, vorallem mit SSD Cache.


    Ansonsten muss man schauen was auf dem Host noch so los ist. Wird das System dort auf SSDs ausgeführt? Treiber alle aktuell? etc.

    Einmal editiert, zuletzt von dr_mike () aus folgendem Grund: Unnötiges Volltext-/Direktzitat entfernt! - siehe Forenregeln!

  • Hi vielen Dank für die Antworten.


    Jumboframes sind aktiviert. Paketgröße 9000 ist überall eingestellt.
    Eine weitere SSD würd ich auch gerne ausprobieren. Nur ist das Problem, das alle 12 Sata Ports voll sind.


    Ich habe in einem Qnap Whitepaper gelesen, dass pro ISCSI Target eine LUN empfohlen wird. Und so viele ISCSI Targets, wie man Kerne / Threads zur Verfügung hat. Meint Ihr das bringt etwas, da ich ja ein ISCSI Target habe und alle LUNs da drauf sind? Ich würde in diesem Zuge auch einen Intel I7 in die Qnap packen, dann könnte ich allen VMs ein eigenes ISCSI Target mit eigener Lun zur Verfügung stellen.


    Ich denke auch, dass es an den Zugriffszeiten liegen sollte. Ein Sas system wäre besser, das stimmt.


    Werde wohl in den sauren Apfel beißen müssen und über ein Wochenende Hdd's austauschen und Raid Level ändern.



    Vielen Dank soweit.

  • Also in meiner VMware Umgebung habe ich je LUN immer 2 Targets und damit jeweils 2 aktive Verbindungen je Datastore.
    Ob sich beide Verbindungen auch bei Windows gleichzeitig aktiv konfigurieren lassen weiß ich nicht, aber so sollte das reichen.


    Ob sich das lohnt für jede VM ein LUN zu erstellen wage ich mal zu beweifeln, mal abgesehen von dem Aufwand und den viel zu vielen Targets.
    Ich nutze jeweils 200 GB Luns und lasse meine vSphere Hosts diese jeweils zu einem 400 GB Volume mounten, so habe ich pro Datastore 4 Verbindungen.
    Auf einem Datastore sind aktuell geschätzt ca. 7 VMs.

  • Wie ist die CPU Auslastung der QNAP, wenn alle VMs mit ihrer iSCSI-LUN arbeiten?
    Für solch ein Vorhaben hätte ich, um bei HP zu bleiben, eine P2000 o.ä. geholt... SAS oder FC je nach Vorliebe ;)