Grundlegendes zu den von RedHat empfohlenen optimierten Profilen

8

Wir werden optimierte (und numad) auf ~ 1000 Servern einführen, von denen die meisten VMware-Server entweder auf NetApp- oder 3Par-Speicher sind.

Laut RedHats-Dokumentation sollten wir das virtual-guestProfil auswählen . Was es tut, kann hier gesehen werden: sung.conf

Wir ändern den E / A-Scheduler auf NOOP, da sowohl VMware als auch NetApp / 3Par eine ausreichende Planung für uns durchführen sollten.

Nach ein wenig Nachforschungen bin ich mir jedoch nicht sicher, warum sie zunehmen vm.dirty_ratiound kernel.sched_min_granularity_ns.

Soweit ich verstanden habe, bedeutet eine Erhöhung vm.dirty_ratioauf 40%, dass bei einem Server mit 20 GB RAM 8 GB zu jedem Zeitpunkt verschmutzt sein können, sofern nicht vm.dirty_writeback_centisecszuerst getroffen wird. Und während diese 8 GB geleert werden, werden alle E / A für die Anwendung blockiert, bis die schmutzigen Seiten freigegeben sind.

Das Erhöhen des Dirty_Ratio würde wahrscheinlich eine höhere Schreibleistung bei Spitzenwerten bedeuten, da wir jetzt einen größeren Cache haben. Wenn der Cache jedoch voll ist, wird die E / A für eine erheblich längere Zeit (mehrere Sekunden) blockiert.

Der andere ist, warum sie die erhöhen sched_min_granularity_ns. Wenn ich es richtig verstehe, verringert das Erhöhen dieses Werts die Anzahl der Zeitscheiben pro Epoche ( sched_latency_ns), was bedeutet, dass das Ausführen von Aufgaben mehr Zeit erhält, um ihre Arbeit zu beenden. Ich kann verstehen, dass dies eine sehr gute Sache für Anwendungen mit sehr wenigen Threads ist, aber für z. Apache oder andere Prozesse mit vielen Threads wäre dies nicht kontraproduktiv?

espenfjo
quelle

Antworten:

7

Die kurze Antwort lautet, dass jede Abstimmung eine Vermutung ist und nur dann einen Wert hat, wenn sie mit empirischen Daten gesichert ist: Probieren Sie es aus. Messe Es. Wenn es dir nicht gefällt, optimiere es.

Eine längere Antwort:

Das Erhöhen des Dirty_Ratio würde wahrscheinlich eine höhere Schreibleistung bedeuten ... E / A wird für eine erheblich längere Zeit blockiert

Nein. Wenn Sie das Dirty-Verhältnis erhöhen, ist es weniger wahrscheinlich, dass Ihr System in einen Zustand gerät, in dem es anfangen muss, Schreibvorgänge zu blockieren. Der Nachteil ist, dass bei einem Ausfall mehr Speicher verwendet wird und ein höheres Risiko für Datenverlust besteht.

Dies bedeutet, dass das Ausführen von Aufgaben mehr Zeit erhält, um ihre Arbeit zu beenden

Prozesse geben normalerweise nach, bevor ihre Zeitscheibe abläuft. Das Problem mit einer VM besteht darin, dass Ihr Computer möglicherweise mit anderen VMs um den CPU- und L1 / L2-Cache konkurriert. Ein hohes Maß an Taskwechsel (aufgrund von Vorbelegung) hat einen großen Einfluss auf den Durchsatz. Die Art von Anwendungen, die normalerweise in VMs bereitgestellt werden, sind CPU-gebunden (Webserver, Anwendungsserver).

Ja, die Erhöhung des Durchsatzes (die für alle Arten von Anwendungen gilt) geht zu Lasten einer Erhöhung der Latenz - letztere liegt jedoch in der Größenordnung von Mikrosekunden, wenn die meisten Transaktionen Millisekunden dauern. Wenn Sie Echtzeitfähigkeit / sehr geringe Latenz benötigen, sollten Sie keine VM verwenden.

symcbean
quelle
Wirklich. Dies sind nur Richtlinien. Stellen Sie Ihren Geschmack ein. Ich verwende jedoch immer noch den empfohlenen "Deadline" -Planer für VMs.
ewwhite
1
@ewwhite Warum würden Sie deadlineanstelle von NOOP auf VMware mit ordnungsgemäßem Speicher empfehlen ?
Espenfjo
@espenfjo Nun, weil RedHat empfiehlt deadline... aber auch meine Antwort sehen.
ewwhite
12

Hier ist der Zeitplan für Tuned-Adm-Konfigurationen ...

Ich denke, es hilft, sie in tabellarischer Form zu sehen. Die Hauptsache ist, dass die Standardeinstellungen für RHEL6 scheiße sind !! Die andere Sache ist, dass das Enterprise- Storage- und das Virtual-Guest-Profil identisch sind, mit Ausnahme einer verringerten Swappiness auf der Seite des virtuellen Gasts (macht Sinn, oder?).

abgestimmte Profile

Für eine Empfehlung zum Speicher-E / A-Aufzug haben Sie einige Abstraktionsebenen auf der Speicherebene. Die Verwendung des Noop-Schedulers ist sinnvoll, wenn Sie RDMs verwenden oder Speicher direkt Ihren virtuellen Maschinen präsentieren. Aber da sie auf NFS oder VMFS leben werden, mag ich immer noch die zusätzlichen Optimierungsoptionen, die der Terminplaner bietet.

Optimierte Profile können auf laufenden Systemen im laufenden Betrieb geändert werden. Wenn Sie also Bedenken haben, testen Sie diese mit Ihrer Anwendung und der spezifischen Umgebung und dem Benchmark.

ewwhite
quelle
1
OK danke. Verstehe, warum du deadlinejetzt willst :)
espenfjo
8

Schauen Sie sich die Performance-Tuning-Videos von Shak und Larry von Summit an, sie sprechen ausführlich über die optimierten Profile.

Einer der größten beabsichtigten Imbissbuden ist, dass die Profile nur ein empfohlener Ausgangspunkt sind, keine unveränderlichen Zahlen, die für jede Umgebung magisch perfekt sind.

Beginnen Sie mit einem Profil und spielen Sie mit den Einstellungen. Generieren Sie eine gute produktionsähnliche Testauslastung und messen Sie Kennzahlen, die für Ihr Unternehmen wichtig sind.

Ändern Sie jeweils eine Sache und zeichnen Sie jedes Ergebnis bei jeder Iteration auf. Wenn Sie fertig sind, überprüfen Sie die Ergebnisse und wählen Sie die Einstellungen aus, die die besten Ergebnisse liefern. Das ist Ihr ideales abgestimmtes Profil.

suprjami
quelle
Haben Sie einen Link zum Shak & Larry-Gespräch?
Aaron Copley
2
Ich habe meiner Antwort Videolinks hinzugefügt.
Suprjami