VMXNET3 empfängt die Puffergröße und die Speichernutzung


12

Hintergrund

Es gab einen Vorfall, bei dem ein Windows-Failovercluster unterbrochen wurde. Ein post mortem zeigte, dass der Knoten wie in diesem Artikel beschrieben "entfernt" wurde .

Wir haben diesen Cluster erst kürzlich vollständig in unsere VMware-Umgebung migriert, und es scheint, dass das oben beschriebene Ereignis die Ursache für den Ausfall gewesen sein könnte.

Der zugehörige VMware-KB-Artikel zu diesem Thema befasst sich mit dem Erhöhen der Small Rx Buffersund der Rx Ring #1Einstellung, warnt jedoch davor, dass ein zu starkes Erhöhen des Werts den Arbeitsspeicher auf dem Host drastisch erhöhen kann.

Nach einer Überprüfung der Network Interface\Packets Received DiscardedLeistungsindikatoren für unsere ~ 150 Windows-VMs hatten 22 vNICs auf 16 Gästen einige verworfene Pakete.

Ein Betrag, der klein genug ist, um die Hosts nicht mit zusätzlicher Speichernutzung zu belasten, aber ich möchte verstehen, wie Speicher für diese Einstellungen verwendet wird und woher der Speicher stammt.

Fragen

  1. Welche Beziehung besteht zwischen der Anzahl der Puffer und der Ringgröße?
  2. Wie berechnet man den für bestimmte Werte dieser Einstellungen verwendeten Speicherplatz?
  3. Da sich diese Einstellungen auf der Netzwerkkarte selbst innerhalb des Gastbetriebssystems befinden, gehe ich davon aus, dass es sich um Treibereinstellungen handelt. Dies lässt mich denken, dass der verwendete RAM ausgelagerter oder nicht ausgelagerter Pool sein könnte.
    1. Ist das richtig?
    2. Wenn ja, sollte ich mir darüber Sorgen machen?
  4. Gibt es Bedenken, die ich hier nicht berücksichtige?

Wir versuchen herauszufinden, ob es ein Nachteil ist, diese auf den betroffenen VMs auf ihre Maximalwerte zu setzen, abgesehen von der Speicherauslastung des VMware-Hosts. Wenn wir zum Beispiel das Risiko erhöhen, dass der Poolspeicher des Gasts aufgebraucht wird, neigen wir eher dazu, klein anzufangen.

Einige (möglicherweise alle) dieser Fragen beziehen sich möglicherweise nicht auf VMware oder Virtualisierung.


Ich habe wirklich schuppiges Zeug gesehen, als sich die TCP-Offload-Engine der physischen Netzwerkkarte schlecht verhielt und VMs merkwürdiges Verhalten zeigten. Dies könnte ein Hinweis sein, den Sie verfolgen können.
SpacemanSpiff

@SpacemanSpiff Es lohnt sich zu überprüfen, aber nur 16 VMs von mehr als 150 weisen das Verhalten auf. Diese 16 Knoten sind über den 12-Knoten-Cluster verteilt und alle empfangen gelegentlich hohe Verkehrsstöße. Dies scheint die im KB-Artikel beschriebenen Symptome auszulösen. Einige davon sind Windows-Cluster, sodass sie nicht mit DRS verschoben werden. Andernfalls werde ich untersuchen, ob alle betroffenen Gäste verworfene Pakete auf einem bestimmten Host angezeigt haben, bevor sie vMotioniert werden. Ich werde noch einmal nachsehen, ob ich Korrelationen finden kann. Vielen Dank.
Briantist

Microbursting vielleicht, welche Hardware ist das?
SpacemanSpiff

@SpacemanSpiff IBM Server, ein paar verschiedene Modelle und Revisionen, auch nicht sicher, welche NICs, kann ich Details morgen überprüfen.
Briantist

Antworten:


5

Welche Beziehung besteht zwischen der Anzahl der Puffer und der Ringgröße?

Sie sind verwandt, aber unabhängig. Der rx "Ring" bezieht sich auf eine Reihe von Puffern im Speicher, die als Warteschlange verwendet werden, um eingehende Netzwerkpakete vom Host (Hypervisor) an den Gast (Windows VM) weiterzuleiten. Der Speicher wird vom Netzwerktreiber im Gast reserviert und dem Hostspeicher zugeordnet.

Wenn neue Netzwerkpakete auf dem Host eingehen, werden sie in den nächsten verfügbaren Puffer im Ring gestellt. Dann löst der Host einen IRQ im Gast aus, auf den der Gasttreiber reagiert, indem er das Paket vom Ring nimmt und es an den Netzwerkstapel des Gastbetriebssystems sendet, der es vermutlich an die Gastanwendung sendet, um es zu empfangen. Vorausgesetzt, die Pakete kommen langsam genug an und der Gasttreiber verarbeitet sie schnell genug, sollte es immer einen freien Platz im Ring geben. Wenn Pakete jedoch zu schnell eingehen oder der Gast sie zu langsam verarbeitet, kann der Ring voll werden und Pakete werden möglicherweise verworfen (wie Sie in Ihrer Situation gesehen haben).

Durch Erhöhen der Ringgröße kann dieses Problem behoben werden. Wenn Sie den Wert erhöhen, sind gleichzeitig mehr Slots im Ring verfügbar. Dies geht in die zweite Einstellung über, "Small Rx Buffers" (Kleine Empfangspuffer). Hierbei handelt es sich um die Gesamtmenge der verfügbaren Puffer, die zum Füllen der Steckplätze im Ring verwendet werden können. Es müssen mindestens so viele Puffer vorhanden sein wie Steckplätze im Ring. Normalerweise möchten Sie mehr. Wenn der Gast einen Puffer aus dem Ring entnimmt, um ihn dem Gastnetzwerk-Stack zu übergeben, wird er möglicherweise nicht immer sofort an den Treiber zurückgesendet. In diesem Fall können Sie mit Reservepuffern zum Füllen des Rings länger arbeiten, ohne Pakete fallen zu lassen.

Die Rx Ring # 1 / Small Rx Buffers werden für Non-Jumbo-Frames verwendet. Wenn Sie eine Standard-NIC-Konfiguration haben, wird nur dieser Ring verwendet.

Wie berechnet man den für bestimmte Werte dieser Einstellungen verwendeten Speicherplatz?

Angenommen, Sie sprechen von Non-Jumbo-Frames, muss jeder Puffer groß genug sein, um ein gesamtes Netzwerkpaket zu speichern, ungefähr 1,5 KB. Wenn Sie also 8192 Puffer zur Verfügung haben, würde dies 12 MB beanspruchen. Ein größerer Ring benötigt auch mehr Speicher, aber die Deskriptoren sind klein (Bytes), sodass Sie sich wirklich um die Puffer kümmern müssen.

Da sich diese Einstellungen auf der Netzwerkkarte selbst innerhalb des Gastbetriebssystems befinden, gehe ich davon aus, dass es sich um Treibereinstellungen handelt. Dies lässt mich denken, dass der verwendete RAM ausgelagerter oder nicht ausgelagerter Pool sein könnte.

Ja, es ist ein nicht ausgelagerter Pool. Wenn die Ringpuffer ausgelagert würden, würde dies wahrscheinlich zu verworfenen Paketen führen, während die Puffer wieder eingelagert würden.

Gibt es Bedenken, die ich hier nicht berücksichtige?

Ich bin mir nicht sicher, ob dies für Ihre Situation relevant ist, aber es kann erwähnenswert sein, dass ein größerer Ring den Cache-Speicherbedarf des Netzwerkempfangspfads erhöht. In Mikrobenchmarks sehen Sie, dass ein größerer Ring normalerweise die Leistung beeinträchtigt. In realen Anwendungen ist das jedoch in der Regel ein größeres Problem, wenn ein Paket verworfen wird, als ein kleiner Leistungszuwachs bei Geschwindigkeits-Bursts.

Quelle: Ich habe bei VMware gearbeitet.


1
Danke Roger, ausgezeichnete erste Antwort. Ich war schon eine Weile nicht mehr in diesem Unternehmen, daher ist dieses Problem weit entfernt von meinem Radar, aber gibt es der Vollständigkeit halber Bedenken hinsichtlich der Speichernutzung, diese auf das Maximum zu setzen? In dem KB-Artikel klingt es so, als ob Sie auf diese Weise viel Speicher verwenden könnten, aber es scheint, als wäre die Menge ziemlich gering. Ich frage dies, weil es auch unklar ist, wie diese Werte anders als durch Versuch und Irrtum bemessen werden sollen, so dass es am einfachsten sein kann, sie auf Maximum zu setzen, wenn es keine / wenig Nachteile gibt.
Briantist

1
Betreff: Speichernutzung, zwei Dinge, die ich beachten möchte: 1) Wenn Sie keine Jumbo-Frames verwenden, ist die Speicherkapazität bei maximaler Einstellung immer noch recht gering. Wenn Sie Jumbo-Frames verwenden, beträgt die Puffergröße ca. 9 KB, sodass Sie mehr Speicher verwenden. 2) Die in einem nicht ausgelagerten Pool verfügbare Speichermenge ist kleiner als die gesamte Speichermenge auf dem Host. Ich bin hier kein Experte, aber dieser Link enthält eine umfassende Übersicht zur Berechnung des verfügbaren Arbeitsspeichers: blogs.technet.microsoft.com/markrussinovich/2009/03/10/…
Roger Jacobson

Grosses Dankeschön. Ich hoffe, diese Antwort hilft jemandem in der Zukunft (vielleicht bin ich es sogar, wenn ich wieder darauf
stoße

0

Ich habe keine Antwort für Punkt 1-2-3, aber Sie können sich bei Ihrem virtuellen Entwickler über die VMware-Hostkonfiguration erkundigen. Wenn er VCP ist, wird er das Zeug verstehen :)

Sie müssen Ihren Host wirklich überprüfen, da Windows-Probleme auf dem Host und nicht auf dem Gast auftreten können.

Es gibt viele Hardwarefunktionen, die Ihre Probleme erklären können: Direktpfad, RSS, VCPU, Energieverwaltungsschema ...

Ich kann dir einen Link geben, der deinem virtuellen Team oder dir hilft :)

Über diesen Link wird der Host optimiert. Http://buildvirtual.net/tuning-esxi-host-networking-configuration/

Und dieses fette PDF:

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

Und hier geht es um rss:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925


Danke für die Antwort, aber ich bin ein VCP. Hier geht es überhaupt nicht wirklich um die Host-Konfiguration. In dem Microsoft-Artikel, auf den ich verlinkt habe, wird erläutert, dass der betreffende Leistungsindikator nicht höher als 0 sein darf und sich auf mehreren VMs befindet. Ich versuche, mehr über die im VMware-KB-Artikel beschriebenen vNIC-Einstellungen zu erfahren.
Briantist

-1

Ich bin nicht in der Lage, vollständig zu suchen und Sie auf die richtigen Seiten zu verweisen. Deshalb bitte ich Sie, selbst nach den Details zu suchen ... (Entschuldigung)

In Failover Cluster gibt es 4 Einstellungen, die wöchentlich geändert werden können. und sie wirken sich nicht auf Puffer oder ausgelagerte oder nicht ausgelagerte Objekte aus. Dies ändert die Art und Weise, in der Fail over Cluster die Entscheidung trifft, einen Knoten als "entfernt" zu betrachten. Diese Einstellungen sind:

SameSubnetDelay SameSubnetThreshold CrossSubnetDelay CrossSubnetThreshold

Möglicherweise lösen sie Ihr Problem nicht, aber wenn Sie daran arbeiten, können Sie im Moment Probleme haben ...

Wenn ich am Montag zurück bin, werde ich auf diesen Beitrag zurückgreifen, wenn Sie weitere Fragen haben

HTH, Edwin.


PS: Können Sie uns mitteilen, welche Windows-Version Sie verwenden?
Edwin van Mierlo

Das war Windows 2008. Ich habe eine Antwort von VMware erhalten (nach all diesen Monaten), aber ich bin nicht einmal in der Firma, in der ich war, als dies passierte. Die Antwort ist nicht einfach und ich wollte die Antwort lesen und etwas posten, aber ich hatte keine Zeit dafür. Ich freue mich über Ihre Tipps zum Cluster, kann sie jedoch derzeit nicht ausprobieren.
Briantist

Ich stelle nur fest, dass der ursprüngliche Beitrag ein paar Monate alt ist, was in der Android-App nicht ganz klar war ... Ich werde das nächste Mal genauer hinschauen ... während meine Antwort für andere Benutzer, die möglicherweise suchen, noch gültig ist für ähnliche Erfahrungen.
Edwin van Mierlo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.