Leistungsoptimierung

Artikel bearbeiten

Performance - Tuning ist die Verbesserung der Systemleistung. Typischerweise wird in Computersystemen die Motivation für eine solche Aktivität als Leistungsproblem bezeichnet, das entweder real oder vorweggenommen sein kann. Die meisten Systeme reagieren auf eine erhöhte Last mit einem gewissen Grad an abnehmender Leistung. Die Fähigkeit eines Systems, eine höhere Last zu akzeptieren, wird als Skalierbarkeit bezeichnet, und das Ändern eines Systems zur Bewältigung einer höheren Last ist gleichbedeutend mit einer Leistungsoptimierung.

Die systematische Abstimmung folgt diesen Schritten:

  1. Bewerten Sie das Problem und legen Sie numerische Werte fest, die ein akzeptables Verhalten kategorisieren.
  2. Messen Sie die Leistung des Systems vor der Änderung.
  3. Identifizieren Sie den Teil des Systems, der für die Verbesserung der Leistung entscheidend ist. Dies wird als Engpass bezeichnet.
  4. Ändern Sie diesen Teil des Systems, um den Engpass zu beseitigen.
  5. Messen Sie die Leistung des Systems nach der Änderung.
  6. Wenn die Änderung die Leistung verbessert, übernehmen Sie sie. Wenn die Änderung die Leistung verschlechtert, setzen Sie sie wieder so ein, wie sie war.

Dies ist ein Beispiel für den Zyklus zum Messen, Bewerten, Verbessern und Lernen aus der Qualitätssicherung.

Ein Leistungsproblem kann durch langsame oder nicht reagierende Systeme erkannt werden. Dies geschieht in der Regel, weil eine hohe Systembelastung, was einen Teil des Systems eine Grenze in ihrer Fähigkeit zu reagieren zu erreichen. Diese Grenze innerhalb des Systems wird als Engpass bezeichnet.

Eine Handvoll Techniken werden verwendet, um die Leistung zu verbessern. Dazu gehören Codeoptimierung, Lastausgleich, Caching-Strategie, verteiltes Computing und Selbstoptimierung.

Inhalt

  • 1 Leistungsanalyse
  • 2 Performance Engineering
  • 3 Codeoptimierung
  • 4 Konfigurationsoptimierung
  • 5 Caching-Strategie
  • 6 Lastausgleich
  • 7 Verteiltes Rechnen
  • 8 Selbstoptimierung
  • 9 Engpässe
  • 10 Siehe auch
  • 11 Referenzen
  • 12 Externe Links

Performance-Analyse

Siehe den Hauptartikel unter Leistungsanalyse

Die Leistungsanalyse, allgemein als Profiling bezeichnet, ist die Untersuchung des Verhaltens eines Programms unter Verwendung von Informationen, die während der Ausführung des Programms gesammelt werden. Ziel ist es zu bestimmen, welche Abschnitte eines Programms optimiert werden sollen.

Ein Profiler ist ein Tool zur Leistungsanalyse, das das Verhalten eines Programms während seiner Ausführung misst, insbesondere die Häufigkeit und Dauer von Funktionsaufrufen. Leistungsanalyse-Tools gab es zumindest ab den frühen 1970er Jahren. Profiler können nach ihren Ausgabetypen oder ihren Methoden zur Datenerfassung klassifiziert werden.

Performance Engineering

Siehe den Hauptartikel unter Performance Engineering

Performance Engineering ist die Disziplin, die Rollen, Fähigkeiten, Aktivitäten, Praktiken, Tools und Ergebnisse umfasst, die verwendet werden, um die nicht funktionalen Anforderungen eines entworfenen Systems zu erfüllen, z. B. die Steigerung des Geschäftsumsatzes, die Reduzierung von Systemausfällen, verzögerte Projekte und die Vermeidung unnötiger Nutzung von Ressourcen oder Arbeit.

Mehrere gemeinsame Aktivitäten wurden in unterschiedlichen Methoden identifiziert:

  • Identifizierung kritischer Geschäftsprozesse.
  • Ausarbeitung der Prozesse in Anwendungsfällen und Systemvolumen.
  • Systemaufbau, einschließlich Leistungsoptimierung.
  • Bereitstellung des konstruierten Systems.
  • Service-Management, einschließlich Aktivitäten, die nach der Bereitstellung des Systems ausgeführt werden.

Codeoptimierung

Siehe den Hauptartikel unter Optimierung (Informatik).

Einige Optimierungen umfassen das Verbessern des Codes, sodass die Arbeit einmal vor einer Schleife und nicht innerhalb einer Schleife ausgeführt wird, oder das Ersetzen eines Aufrufs einer einfachen Auswahlsortierung durch einen Aufruf des komplizierteren Algorithmus für eine Quicksortierung.

Konfigurationsoptimierung

Moderne Softwaresysteme, z. B. Big Data-Systeme, umfassen mehrere Frameworks (z. B. Apache Storm, Spark, Hadoop). Jedes dieser Frameworks stellt Hunderte von Konfigurationsparametern bereit, die die Leistung solcher Anwendungen erheblich beeinflussen. Einige Optimierungen (Optimierungen) umfassen die Verbesserung der Leistung der Anwendung, um die beste Konfiguration für solche Anwendungen zu finden.

Caching-Strategie

Hauptartikel: Cache (Computing)

Das Caching ist eine grundlegende Methode, um Leistungsengpässe zu beseitigen, die durch den langsamen Zugriff auf Daten entstehen. Das Caching verbessert die Leistung, indem häufig verwendete Informationen im Hochgeschwindigkeitsspeicher gespeichert werden, die Zugriffszeit verkürzt und wiederholte Berechnungen vermieden werden. Caching ist eine effektive Methode zur Verbesserung der Leistung in Situationen, in denen das Prinzip der Referenzlokalität gilt. Die Methoden, mit denen bestimmt wird, welche Daten zunehmend schneller gespeichert werden, werden gemeinsam als Caching-Strategien bezeichnet. Beispiele sind ASP.NET-Cache, CPU-Cache usw.

Lastverteilung

Hauptartikel: Lastausgleich (Computing)

Ein System kann aus unabhängigen Komponenten bestehen, die jeweils Anforderungen bearbeiten können. Wenn alle Anforderungen von einem dieser Systeme (oder einer kleinen Anzahl) bearbeitet werden, während andere inaktiv bleiben, wird Zeit damit verschwendet, darauf zu warten, dass das verwendete System verfügbar ist. Die Anordnung, dass alle Systeme gleichermaßen verwendet werden, wird als Lastausgleich bezeichnet und kann die Gesamtleistung verbessern.

Der Lastausgleich wird häufig verwendet, um weitere Vorteile aus einem verteilten System zu erzielen, indem intelligent ausgewählt wird, auf welcher Maschine eine Operation ausgeführt werden soll, basierend darauf, wie beschäftigt alle potenziellen Kandidaten sind und wie gut jede Maschine für die Art der auszuführenden Operation geeignet ist.

Verteiltes Rechnen

Hauptartikel: Distributed Computing

Distributed Computing wird verwendet, um das Potenzial für die parallele Ausführung auf modernen CPU-Architekturen weiter zu erhöhen. Die Verwendung verteilter Systeme ist wichtig, um Leistungsvorteile aus der verfügbaren Parallelität zu erzielen. Hochleistungs- Cluster-Computing ist eine bekannte Verwendung verteilter Systeme zur Leistungsverbesserung.

Verteiltes Computing und Clustering können sich negativ auf die Latenz auswirken und gleichzeitig die Belastung gemeinsam genutzter Ressourcen wie Datenbanksysteme erhöhen. Um die Latenz zu minimieren und Engpässe zu vermeiden, kann verteiltes Rechnen erheblich von verteilten Caches profitieren.

Selbstoptimierung

Hauptartikel: Selbstoptimierung

Ein Selbstoptimierungssystem kann seine eigenen internen Betriebsparameter optimieren, um die Erfüllung einer Zielfunktion zu maximieren oder zu minimieren. typischerweise die Maximierung der Effizienz oder Fehlerminimierung. Selbstoptimierungssysteme weisen typischerweise eine nichtlineare adaptive Steuerung auf. Selbstoptimierende Systeme sind seit Jahrzehnten ein Markenzeichen der Luft- und Raumfahrtindustrie, da diese Art von Rückmeldung erforderlich ist, um eine optimale Steuerung mit mehreren Variablen für nichtlineare Prozesse zu generieren.

Engpässe

Hauptartikel: Engpass (Software)

Der Engpass ist der Teil eines Systems, das voll ausgelastet ist. Andere Teile des Systems warten im Leerlauf darauf, dass es seine Aufgabe ausführt.

Bei der Suche und Beseitigung von Engpässen ist es wichtig, ihre Existenz nachzuweisen, z. B. durch Probenahme, bevor Maßnahmen zur Beseitigung dieser Engpässe ergriffen werden. Es besteht eine starke Versuchung zu raten. Vermutungen sind oft falsch, und nur in Vermutungen zu investieren, kann selbst ein Engpass sein.

Siehe auch

Verweise

Externe Links

Contacts: mail@wikibrief.org
Der Inhalt ist unter der CC BY-SA 3.0-Lizenz verfugbar (sofern nicht anders angegeben).