Optimierung der TCP / IP-Leistung unter KVM / Qemu

7

Da immer mehr Unternehmen auf öffentliche Cloud-Dienste umsteigen, bin ich gespannt, was Sie von TCP / IP-Tuning in der Cloud halten. Lohnt es sich, sich damit zu beschäftigen? Da Sie keinen Zugriff auf den Host-Server haben, sind Sie vermutlich etwas eingeschränkt

Nehmen wir an, Sie führen drei MongoDB-Server in einem Replikatset unter FreeBSD oder Linux aus, die alle über ein internes Netzwerk synchronisiert werden.

Ich wäre auch neugierig, wenn jemand tatsächliche Leistungsbenchmarks erstellen würde, um seine Argumente zu untermauern. Ich habe die verschiedenen für KVM / Qemu verfügbaren Netzwerktreiber hier verglichen , bin aber gespannt, was die Gurus hier vorschlagen, um sie weiter zu optimieren .

Ich begann ein wenig mit den Tuning-Empfehlungen Herumspielen wie vorgeschlagen über hier , aber interessanterweise habe ich eine Abnahme der Leistung, anstatt eine Erhöhung, aber vielleicht habe ich nicht in vollem Umfang die zwickt verstehen.

Update: Ich habe noch ein paar Benchmarks gemacht und das Ergebnis hier gepostet . Leider war das Ergebnis nicht wirklich das, was ich erwartet hatte.

vpetersson
quelle
1
Ich bezweifle, dass Ihre Analyse im Blog korrekt ist, wenn Sie Annahmen über qemu-kvm und virtio_net treffen möchten, es sei denn, Sie möchten ausdrücklich sagen, dass alle Schlussfolgerungen spezifisch für FBSD als Gastbetriebssystem sind (und ich weiß nicht, was verwendet wird o die Hosts - könnte auch etwas suboptimales sein). Wenn Sie den aktuellen und den neuesten Code testen möchten, müssen Sie Fedora sowohl für den Host als auch für den Gast verwenden.
Dyasny
In meinem Blog wurde natürlich davon ausgegangen, dass FreeBSD verwendet wurde. Das war ziemlich klar. Es wurde auch angegeben, dass die Tests mit einer öffentlichen Cloud (genauer gesagt CloudSigma) durchgeführt wurden. Es sollte auch davon ausgegangen werden, dass es sich um eine öffentliche Cloud handelt, wie in der Frage angegeben. Ich bin auch nicht daran interessiert, den neuesten VirtIO-Treiber zu testen, sondern generische Tuning-Tipps. Ich habe jedoch einige weitere Benchmarks durchgeführt und diese hier veröffentlicht .
Vpetersson
1
Ich ging auf diesen Kommentar ein: "Während ich diese Benchmarks für die CloudSigma-Architektur durchgeführt habe, sollten sie, da sie KVM / Qemu ausführen, ein guter Indikator für die allgemeine Leistung unter KVM / Qemu sein." Ich denke, es ist irreführend, und ich mache wirklich eine Untertreibung, indem ich es so milde sage.
Dyasny
Klar, das ist ein guter Punkt. Es ist eine etwas vereinfachende Annahme. Ich denke, wenn Sie wirklich Leistungsbenchmarks durchführen und so viele potenzielle architektonische Engpässe wie möglich vermeiden möchten, bieten Ihnen zwei VMs mit einem gemeinsam genutzten lokalen LAN einen besseren Indikator.
Vpetersson
Na sicher. Darüber hinaus müssen Sie sicherstellen, dass Sie ein ordnungsgemäßes Host- und Gastbetriebssystem mit den richtigen Treibern auf der richtigen Hardware ausführen. Mit "richtig" meine ich Benchmark-Elemente, auf die der Entwicklungs-Mainstream abzielt - Fedora und RHEL (möglicherweise Ubuntu, aber ich bin nicht sicher, ob es gut getestet wurde -, die dort ein seltsames Verhalten festgestellt haben, das sich auf Fedora nicht reproduzieren lässt), Hardware für Unternehmen und bald. Sie verwenden unbekannte Host-Software und -Hardware, und das Gastbetriebssystem ist auch bei solchen Aufgaben
keineswegs

Antworten:

2

Ich möchte zwei Punkte ansprechen, die sich auf Ihre Schlussfolgerungen auswirken können.

1) Überprüfen Sie, was über Autotuning geschrieben steht. Diese Funktion, die, wie ich mich erinnere, zum ersten Mal im Linux-Kernel 2.6.18 erschien und in nachfolgenden Kerneln verbessert wurde. Einfach ausgedrückt, ermöglicht dies dem Kernel, die TCP-Optimierungen, an die sich Netzwerkprogrammierer gewöhnt haben, dynamisch zu ändern. Google Autotune Linux. Siehe auch http://www.psc.edu/networking/projects/tcptune/?_sm_byp=iVVq2rrM1N2DqN0r#Linux

In der Kurzversion kann Linux die TCP-Stack-Parameter für Sie anpassen und nicht eingreifen, da dies die Leistung beeinträchtigen kann.

Mein zweiter Punkt ist die Überprüfung mit der von Ihnen verwendeten Version von KVM_QEMU. Es wurde viel mit der Leistung gearbeitet, und in früheren Versionen von VIRTIO_NET gab es einen Fehler, der die Leistung in Hochgeschwindigkeitsnetzwerken einschränkte. Da KVM_QEMU jetzt bei 1.0 ist, gehen Sie damit um.

wcorey
quelle