Ich weiß, dass Linux für mehrere Benutzer/parallel laufende Prozesse entwickelt wurde, aber auf Unternehmensebene werden viele davon für einzelne (aber große) Anwendungen verwendet, um einen internen Dienst zu unterstützen, der nur sehr wenige Clients bedient.
Wie sollten wir in einem solchen Anwendungsfall das System oder den Kernel (insbesondere Red Hat Linux, Fedora, CentOS) optimieren, um es für das Szenario zu optimieren? Um die Latenz zu minimieren, den Kontextwechsel zu reduzieren und möglichst wenig lokale Festplatten-E/A durchzuführen.
Die Sitzungslänge kann dauerhaft sein (da es nur wenige Clients gibt), der Datenaustausch ist gering, aber sehr häufig, etwa 1.000 bis 2.000 Nachrichten pro Sekunde, Größe 40 bis 100 Byte.
Antwort1
Leistungsoptimierung ist sowohl eine schwarze Kunst als auch eine Wissenschaft. Es wurden ganze Bücher darüber geschrieben, darunter auch einiges als Teil derLieferantendokumentation
Sie beginnen mit einer guten Überwachung, fügen eine Last hinzu, ermitteln einen Ausgangswert und beginnen erst dann mit der Anpassung und beobachten, ob Ihre Anpassung das gewünschte Ergebnis gebracht hat oder nicht.
Wiederholen Sie den Vorgang, bis Sie das optimale Ergebnis erzielen.
Sie erwähnen Ihre Hauptversion von RHEL oder CentOS nicht, aber sie alle beinhalten auch automatisches Tuning, beispielsweise mit dem tuned
Daemon. Vordefinierte Leistungsprofile können ausgewählt tuned-adm list
und dann mit aktiviert werden tune-adm profile <profile-name>
.
Für Ihren Anwendungsfall das RHEL 7-Profillatency-performance
klingt nach etwas, von dem Sie profitieren könnten:
latency-performance
Ein Serverprofil, das sich auf die Reduzierung der Latenz konzentriert. Dieses Profil wird für latenzempfindliche Workloads empfohlen, die von C-State-Tuning und der erhöhten TLB-Effizienz von Transparent Huge Pages profitieren. Dieses Profil bevorzugt Leistung gegenüber Energieeinsparungen, indemintel_pstate
und festgelegt werdenmax_perf_pct=100
. Es aktiviert Transparent Huge Pages, verwendetcpupower
zum Festlegen des Performance-Cpufreq-Governors und fordert einencpu_dma_latency
Wert von an1
.
Für allgemeinere Linux-OptimierungenBrandan Gregghat eine Reihe visueller Diagramme erstellt, die zeigen, welches Tool für welchen Teil Ihres Systems zu verwenden ist, und die sich als wirklich nette Spickzettel eignen: