# Rechenleistung

Die Rechenleistung (auch Datenverarbeitungsleistung oder Performanz, englisch computing power oder performance genannt) ist ein Maß für Rechenmaschinen und Datenverarbeitungs- (kurz DV-Systeme) oder informationstechnische Systeme (kurz IT-Systeme). In der Regel steht dabei die Datenverarbeitungsgeschwindigkeit (für die Berechnungen pro Zeitspanne), umgangssprachlich auch kurz Geschwindigkeit oder Schnelligkeit genannt, der eingesetzten Maschinenteile (wie zum Beispiel der oder die Haupt- und Grafikprozessor-Einheiten) sowie die Geschwindigkeit einzelner Anwendungen (wie zum Beispiel Simulationsberechnungen oder die Bearbeitung großer Datenbankverwaltungen) im Mittelpunkt der Betrachtung und seltener auch die Rechenleistung ganzer IT-Systeme, wie etwa Großrechner oder der Verbund derselben in sogenannten Supercomputern.
Darüber hinaus wird mit der Leistung auch die physikalische Leistung eines IT-Systems beschrieben, wobei die verrichtete Arbeitsmenge oder die aufgewendete Energie pro Zeitspanne betrachtet wird.

## Weitere Eingrenzungen

Im Sinne von „wie schnell“ bedeutet Leistung, wie lange das DV-System zur Erledigung eines Bearbeitungsauftrages braucht. Ein solcher Auftrag kann etwa die Online-Reaktion auf einen Mausklick sein oder aber auch die Abwicklung eines großen Hintergrundauftrages. „Wie schnell“ kann aber auch die Frage sein, wie viele Aufträge das DV-System pro Zeitspanne erledigen kann. Dies ist der Auftragsdurchsatz.
Neben dieser Beschreibung wird der Begriff auch für andere Eigenschaften wie Funktionalität, Energieeffizienz oder Zuverlässigkeit verwendet.

## Komponenten- und Systemleistung
### Komponentenleistung

Komponentenleistung bezeichnet die Leistung einer einzelnen Komponente eines DV-Systems, beispielsweise des Prozessors, des Hauptspeichers oder der Netzwerk-Verbindung. Die Benutzerschaft einer Komponente ist die sie umgebende Gerätschaft, etwa die maschinenbefehlserzeugende Umgebung des Prozessors, die speicherzugriffserzeugende Umgebung eines Speichersystems oder die Datentransportaufträge erzeugende Menge von Knoten in einem Rechnernetz. Die DV-Leistung von Komponenten beschreibt man mit Leistungsgrößen wie Verteilung der Auftragserledigungszeit, Durchsatzraten von Aufträgen oder mittlere Antwortzeit. Gegebenenfalls werden solche Größen noch nach Auftragsarten differenziert, zum Beispiel Schreib- und Leseaufträge bei Speichersystemen. Mit Komponentenleistung wird in diesem Fall die Menge aller Leistungsgrößen bezeichnet. Zur Beurteilung, ob die Komponente eine zufriedenstellende Leistung hat, ist eine Bewertung vorzunehmen, die die ermittelten Leistungswerte den von der Benutzerschaft (also der maschinellen Umgebung der Komponente) geforderten Werten der gewählten Leistungsgrößen gegenüberstellt.

### Systemleistung

Mit Systemleistung wird die Leistung eines kompletten DV-Systems bezeichnet, das aus einer Vielzahl von Komponenten bestehen kann. Entsprechende Teile der DV-Systeme können einzelne Softwarekomponenten (Anwendungssoftware und Betriebssystem), Rechner (zum Beispiel Dateiserver), Rechnernetze (zum Beispiel Computercluster) oder spezielle Geräte (zum Beispiel Switches) sein. Weiterhin kommt es darauf an, wie effizient Algorithmen implementiert sind und wie die Hard- und Software konfiguriert ist.
Die Benutzerschaft kann sowohl aus menschlichen Benutzern („normale“ Benutzer, Administratoren, …) als auch aus weiteren DV-Systemen bestehen. Der Web-Auftritt der Wikipedia wird beispielsweise sowohl von menschlichen Benutzern als auch von anderen DV-Systemen wie Suchmaschinen verwendet. Die DV-Leistung eines solchen Systems beschreibt man – ebenso wie bei der Komponentenleistung – mit Leistungsgrößen wie Antwortzeit-Verteilung, mittlere Antwortzeit, Durchsatzrate und Ähnlichem. Zweckmäßigerweise detailliert man diese Größen noch nach den verschiedenen Auftragsarten, die in dem von der gesamten Benutzerschaft erzeugten Auftragsstrom vorkommen. Mit Systemleistung bezeichnet man die Menge aller gemessenen und vorhergesagten Leistungsgrößen.
Es wurde wiederholt versucht, Systemleistung aus den bekannten Komponentenleistungen zu berechnen. Die Erfahrung zeigt, dass die Zusammenhänge im Allgemeinen zu komplex sind, so dass dies nicht gelingt. Verlässliche Systemleistungswerte erhält man nur aus Messungen oder, mit Einschränkungen, aus Vorhersagen.

## Kenngrößen und Leistungskriterien

Es gibt eine große Anzahl von Kenngrößen, welche zur Leistungsbewertung herangezogen werden. In vielen Fällen sagen diese Kennzahlen nur wenig über die tatsächliche Leistungsfähigkeit des Systems aus.

### Instructions per Cycle (IPC)

    Mittlere Anzahl der ausgeführten Anweisungen dividiert durch die Anzahl der Taktzyklen, die für die Ausführung des Programms benötigt werden. IPC kann auch als Kehrwert von CPI (cycles per instruction) ausgedrückt werden. Ein hoher IPC-Wert steht für eine hohe Effizienz der Architektur. Der Wert alleine sagt jedoch nichts über die tatsächliche Geschwindigkeit (Effektivität) aus.

### Instruktionen pro Sekunde

    Eine Komponentenleistungsgröße, die früher viel verwendet wurde, um die Leistung eines Prozessors zu charakterisieren, ist die (mittlere) Anzahl ausführbarer Maschinenbefehle pro Zeiteinheit. Jedoch hängt es von der Rechnerarchitektur (insbesondere dem Maschinenbefehlssatz) ab, wie viele Maschinenbefehle ausgeführt werden müssen, um einen von einem Benutzer gewünschten Datenverarbeitungsvorgang durchzuführen.

### Floating Point Operations Per Second

    Die Leistungsgröße Gleitkommaoperationen pro Sekunde wird insbesondere für Supercomputer verwendet, da im Einsatzgebiet Hochleistungsrechnen diese Operationen eine wichtige Rolle spielen. Ein Vergleich ist allerdings nur möglich wenn die Benchmark-Methode, mit der der Wert ermittelt wurde, bekannt ist.

### Datenübertragungsrate

    Die Datenübertragungsrate gibt die Gesamtmenge der Daten (Nutzdaten und Steuerdaten) pro Zeit an, die übertragen werden kann.

### Datendurchsatz

    Der Datendurchsatz gibt die Menge der Nutzdaten pro Zeit an, die übertragen werden kann.

### Antwortzeit

    Antwortzeit ist die Zeit zwischen dem Absenden einer Anfrage und dem Empfang der zugehörigen Antwort.

### Response ratio

    Verhältnis von Bearbeitungszeit zur Antwortzeit

### Frames per second

    Wird als Leistungskennzahl von Grafikkarten verwendet für die Anzahl der ausgegebenen Bilder pro Sekunde.

### Prozessortakt

    Diese ist jedoch weder eine Systemleistungsgröße noch eine Komponentenleistungsgröße, sondern betrifft eine noch weiter innen liegende Schicht. Faktoren wie Prozessorarchitektur, Anzahl der Prozessorkerne, Geschwindigkeit der internen Busse, Speichergröße (Cache und Arbeitsspeicher) und andere beeinflussen die Leistung erheblich. Ein Vergleich nur über den Prozessortakt ist irreführend.

### Latenzzeit

    Dies ist ein anderer Ausdruck für Reaktionszeit (Auftragsbearbeitungszeit nach einem Interrupt) mit der Nebenbedingung, dass ein gewisser oberer Wert nicht überschritten wird. Es ist die garantierte maximale Antwortzeit. Sie ist eine von vielen Varianten von Systemleistungsgrößen. In Termen der ISO-Norm ausgedrückt ist die Latenzzeit die Zeitklassengrenze (ISO: time class limit) der Zeitklasse Nr. 1 (ISO: time class 1) der Durchlaufzeitforderung (ISO: timeliness function) der Auftragsart (ISO: task type) „Reaktion auf einen Interrupt“. Diese Durchlaufzeitforderung hat nur eine einzige Zeitklasse.

### Zugriffszeit

    Bei einem Speichermedium ist die Zugriffszeit die Zeit zwischen dem Eintreffen eines Schreib- oder Lesebefehls und dem Beginn des entsprechenden Vorgangs.

## Messung versus Vorhersage

DV-Leistung wird mit Leistungsgrößen beschrieben. Zur Ermittlung von Zahlenwerten solcher Größen gibt es die folgenden Wege:

### Messung

Messung (englisch measurement) ist die experimentelle Bestimmung von DV-Leistungswerten mit dem real aufgebauten DV-System. Der dem System zugeführte Auftragsstrom kann von realen Benutzern erzeugt werden (reale Last) oder durch einen Benutzersimulator (simulative Last). Die simulative Last kann eine individuelle Last meist im Rahmen eines Lasttests sein oder eine standardisierte Last für ein Benchmark-Vergleich.
Es wird zwischen Software-Messung und Hardware-Messung unterschieden.
* Hardware-Messung: Hier werden Messfühler direkt an das Messobjekt angebracht, welche die entsprechenden Daten übertragen. Diese Art der Messung beeinträchtigt den Ablauf des Objektrechners nicht.
* Software-Messung: Ein Messprogramm wird auf dem Objektrechner installiert, welches die gewünschten Informationen über eine Standardschnittstelle überträgt. Da die Messprogramme unabhängig von der Hardware arbeiten, sind nur minimale Kenntnisse des Objektrechners nötig und die Messprogramme sind auf nahezu allen Rechnern lauffähig. Jedoch wird der Programmablauf auf dem Objektrechner verändert und es werden zusätzliche Ressourcen verbraucht. Das dynamische Verhalten des Objektrechners wird verfälscht.

### Vorhersage

Vorhersage ist eine Vorgehensweise, bei der die Zahlenwerte von DV-Leistungsgrößen mittels mathematisch-analytischer Verfahren oder mittels Simulationsverfahren bestimmt werden. Anders als bei den Messmethoden muss bei der berechnenden Leistungsbewertung kein reales System vorhanden sein.
Bei den analytischen Verfahren werden das DV-System und seine Benutzer durch ein mathematisches Modell dargestellt und die DV-Leistungswerte rein rechnerisch ermittelt. Bei den Simulationsverfahren werden sowohl das DV-System wie auch seine Benutzer simuliert und aus diesem simulierten Geschehen die Zahlenwerte der DV-Leistungsgrößen bestimmt. Sowohl bei den analytischen Verfahren wie auch bei den Simulationsverfahren sind die Ergebnisse im Allgemeinen nur Näherungs- bzw. Schätzwerte. Sie haben im Gegensatz zu Werten aus Messungen mit einem realen DV-System den Charakter einer Vorhersage beziehungsweise Vorausberechnung.
Besonders in der Kommunikationstechnik bietet es sich an, das System als Graph zu modellieren (graphentheoretische Beschreibung). Die Komponenten werden als Knoten dargestellt. Verbindungen zwischen den Komponenten werden als Kanten repräsentiert. Jede Kante hat eine Maximalkapazität, welche nicht überschritten werden darf und einen aktuellen Fluss. Das entstandene Netzwerk lässt sich nun bewerten, indem der größtmögliche Fluss zwischen zwei Komponenten bestimmt wird. Wird das paarweise für alle Knoten durchgeführt, so lassen sich langsame Komponenten ausfindig machen.
Eine verkehrstheoretische Beschreibung (Verkehrstheoretisches Modell) geht von einer Warteschlange mit Aufträgen aus, welche von einer Bedienstation abgearbeitet wird. Die Aufträge erreichen die Warteschlange mit einer mittleren Ankunftsrate $\lambda$ und verlassen die Bedienstation mit einer mittleren Bedienrate $\mu$. Die Verkehrsintensität wird durch den Quotienten $\sigma ={\frac {\lambda }{\mu }}$ beschrieben. Das System arbeitet nur vernünftig, solange $\sigma \leqq 1$ ist. Andernfalls kommt es zum Überlauf. Mit diesem Modell lassen sich verschiedene Systeme darstellen. Ein Rechner ohne Pipelining mit nur einem Prozessor bekommt als Verteilungsfunktion eine negative Exponentialverteilung. Pipeline-Prozessoren mit $k$ Stufen werden mit der Erlang-Verteilung modelliert. Für Multiprozessorsysteme nutzt man eine Hyperexponentialverteilung $k$-ter Ordnung
* Allgemeines Warteschlangenmodell
* Warteschlangenmodell für Pipeline-Proze
* Warteschlangenmodell für Multiprozessorsysteme
Ein weiterer Versuch, die Leistung von Prozessoren analytisch zu vergleichen, sind Mixes und Kernprogramme. Diese Versuche sind allerdings relativ aufwändig und werden heute kaum noch verwendet. Dabei werden die Befehlsausführungszeit von unterschiedlichen Befehlstypen nach der erwarteten relativen Häufigkeit ihres Auftretens summiert und als mittlere Befehlsausführungszeit bewertet (Befehltmixe). Kernprogramme sind hingegen Lösungen für typische, abgebgrenzte Aufgaben, die für den zu bewertenden Rechner geschrieben werden. Sie werden jedoch nicht zur Ausführung gebracht. Ziel ist es, die Ausführungszeit auf Grundlage der einzelnen Befehlsausführungszeiten zu bestimmen.

## Bewertung der DV-Leistung

Leistungswerte (egal ob mittels Messung oder mittels Vorhersagemethoden ermittelt) sind Zahlenwerte physikalischer Größen, die zwar wichtig und interessant sind, die aber für sich allein gesehen noch keine Aussage zu der wichtigen Frage machen, ob das DV-System die (Leistungs-)Bedürfnisse seiner Benutzerschaft erfüllt. Diese Bedürfnisse müssen also zahlenmäßig definiert werden.
Sodann muss ein Vergleich dieser (geforderten) Werte mit den vom DV-System erbrachten Leistungswerten durchgeführt werden. Das Ergebnis dieses Vergleichs ist die Aussage, ob das DV-System ausreichend ist, um die Benutzerbedürfnisse zu befriedigen. Dies ist die Bewertung. Damit kommt man zu dem von den Benutzern letztendlich benötigtem Ergebnis „nicht ausreichend“, „ausreichend“, „übererfüllt“ usw. Die Skala einer solchen Endaussage könnte auch detaillierter gewählt werden.
Hingewiesen sei noch auf folgende Sachverhalte:
* Die Werte von DV-Leistungsgrößen eines betrachteten Systems sind konkrete Zahlen. Sie würden sich nur ändern, wenn das System geändert würde (zum Beispiel durch den Austausch von Hardwarekomponenten, wie den Prozessor oder eine Speichereinheit oder von Softwarekomponenten, etwa die Betriebssystemversion und/oder von Anwendungssoftware mit anderer Software-Effizienz).
* Dagegen sind die Bewertungsergebnisse von der Benutzerschaft, auf die bei der Bewertung Bezug genommen wird, abhängig. So kann beispielsweise die Bewertung eines betrachteten DV-Systems für die Benutzerschaft A sehr gut ausfallen, während dasselbe System für die Benutzerschaft B unbefriedigend ist.

## Benchmark und Lasttest

Während das Ziel des Lasttests ist, einen Nachweis zu erbringen ob die zu erwartende Last in geforderter Zeit abgearbeitet werden kann, ist es das Ziel des Benchmarks eine Kennzahl zu ermitteln die zwischen verschiedenen Systemen verglichen werden kann.
Der Lasttest kann so gestaltet sein, dass reale Benutzer den Laststrom erzeugen (reale Last). Der Laststrom kann aber auch durch einen Simulator, welcher die gesamte Benutzerschaft detailliert simuliert, erzeugt werden (simulative Last). Ein Benchmark verwendet stets eine standardisierte, simulative Last um die Ergebnisse vergleichen zu können.
Um genauere Ergebnisse zu erreichen, muss eine Messsoftware eingesetzt werden, welche das Auftragsgeschehen genau protokolliert und nach Beendigung des Versuchs die Auswertung (Ermittlung der DV-Leistungsgrößen) vornimmt.
Im Laufe der Zeit ist eine enorme Menge von (Computer-)Benchmarks entwickelt und beschrieben worden, sowohl auf der wissenschaftlichen Ebene, wie auch von der Industrie und der Wirtschaft. Diese Benchmarks haben fast alle unterschiedliche Prinzipien und DV-Leistungsgrößen, sodass Messergebnisse im Allgemeinen nicht vergleichbar sind. Viele dieser Benchmarks hatten eine nur kurze Aktualität und sind wieder verschwunden.

## Leistungsdatenbanken

Fachzeitschriften und -magazine veröffentlichen regelmäßig Rankings zur Leistungsfähigkeit von Rechnersystemen oder -komponenten. Diese werden durch Kennzahlen oder Benchmarks bestimmt.
Eine sehr bekannte Datenbank, die TOP500, listet die 500 leistungsfähigsten Superrechner der Welt auf. Hierzu wird der LINPACK-Benchmark verwendet.

## Standards

In sich vollständige Vorschläge zur Benchmark-Methodik und zu DV-Leistungsgrößen machen die Normen DIN 66273 „Messung und Bewertung der Leistung von DV-Systemen“ und ISO 14756 „Messung und Bewertung der Leistung und der Software-Effizienz von DV-Systemen“. Die ISO-Norm hat die Prinzipien von DIN 66273 übernommen und erweitert. Messungen, die nach DIN 66273 durchgeführt worden sind, sind auch konform zu ISO 14756. Die ISO-Norm erweitert das Anwendungsfeld über die Messung und Bewertung der DV-Leistung hinaus auf die Messung der (Laufzeit-)Effizienz von System- und/oder Anwendungssoftware. Die DIN-Norm normt die Benchmark-Methodik, verzichtet wegen der Kurzlebigkeit von Benchmarks aber darauf, konkrete Benchmarks zu definieren. Die ISO-Norm enthält darüber hinaus jedoch noch Beispiele vollständiger Benchmarks.
Der Application Response Measurement (ARM), ist ein Standard der Open Group und dient zur Leistungsmessung von Transaktionen aus der Sicht des Benutzers.

## Variable Leistung

In der Regel ist die Leistung eines informationstechnischen Systems konstant. Jedoch kann aus Gründen der Abwärtskompatibilität oder um Energie zu sparen eine Verringerung der Leistung zweckmäßig sein. Die Turbo-Taste sorgte bei PCs der 8086er bis Pentium-Ära für Abwärtskompatibilität zum IBM-Standard. Dieses erfolgte oft durch Verringerung des Taktes, aber auch durch Abschalten des Level-1-Cache oder eine Verringerung der Taktfrequenz des Front Side Bus.
In modernen Notebooks hingegen reduzieren Technologien wie PowerNow!, Cool’n’Quiet oder Intel-SpeedStep-Technologie die Leistung, wenn diese nicht gebraucht wird, um die knappen Energieressourcen in den Akkumulatoren zu schonen. Dieses kann durch Verringerung des Taktes oder der Kernspannung bzw. Abschaltung einzelner Prozessoren bei Mehrprozessorsystemen geschehen.