Infrastruktur

Energie in der Software

28. Oktober 2011, 10:51 Uhr | Carter Edmonds, Software Architect bei der Communications Rackmount Server Division von Kontron

Fortsetzung des Artikels von Teil 7

Applikationsoptimierung

Abbildung 3 zeigt Veränderungen in Form von Datenpunkten in Abhängigkeit von der Zahl von Threads und der aktiven Cores. Datenpunkte unterhalb der drei Orginal-Verläufe veranschaulichen jene Parameter, welche die integrierten Optionen mittels eines o
Abbildung 3 zeigt Veränderungen in Form von Datenpunkten in Abhängigkeit von der Zahl von Threads und der aktiven Cores. Datenpunkte unterhalb der drei Orginal-Verläufe veranschaulichen jene Parameter, welche die integrierten Optionen mittels eines optimierten Power-Governors übertroffen haben.
© Kontron

Schon eine einzelne Applikation, die nicht in Hinblick auf ihr Energiesparpotenzial optimiert wurde, kann die Gesamtbilanz der Energieeinsparungen deutlich verschlechtern. In einer Packet-Inspection-Applikation beispielsweise, können Arbeits-Threads vorgesehen sein, welche die Dekodierung, Analyse und das Lookup übernehmen, sobald neue Datenpakete eintreffen. Ohne Optimierungen hinsichtlich der Energieeffizienz könnte die Applikation die Arbeits-Threads in einer Abfrageschleife belassen, während diese auf das Eintreffen neuer Datenpakete warten. Der Prozessor, der diese Threads verwaltet, bliebe ständig aktiv bei vollem Energieverbrauch. Eine für verbesserte Energieeffizienz optimierte Applikation würde es erlauben, diese Threads zu blocken und zum Scheduler zurückzukehren, solange auf das nächste Event gewartet wird. In diesem Fall könnte der Prozessor im Schlafzustand verweilen, bis er wieder gebraucht wird, was deutlich energieeffizienter ist.

Die Auswahl der Cores ist eine weitere Kompromisslösung, mit der Benutzer beeinflusst werden können das Verhältnis Energieaufnahme versus Leistung zu beeinflussen. Bei optimaler Programmierung verbrauchen schlafende Cores nur ein Minimum an Energie. Da Threads den zur Verfügung stehenden Cores zugewiesen werden, kann es zu Abstrichen bei der Performance kommen, da bestimmte Ressourcen geteilt werden müssen. Beispielsweise teilen sich zwei Hyperthreaded-Core-Geschwister einen Großteil derselben Ressourcen wie Cores, I/Os und Cache in einer einzelnen CPU. Wird eine zweite CPU hinzugefügt, verdoppelt dies den Cache und das Cache-Sharing, was je nach Applikation gewünscht sein kann oder nicht. Standardmäßig verteilt der Scheduler des Betriebssystems die Threads so breit wie möglich, obwohl dies durch die CPU-Affinität justiert werden kann. Wenn Threads Daten teilen, ist es ratsam, dass diese Threads so dicht wie möglich beieinander gehalten werden, beispielsweise indem sie auf Cores im selben Pa-ckage und gemeinsamem Cache abgewickelt werden. Auf der anderen Seite profitieren viele Applikationen insbesondere dann, wenn sie so wenig Hardware wie möglich teilen. In einem Dual-Prozessor-Server beispielsweise verdoppelt das Aktivieren des zweiten Packages die Cachegröße, was in den meisten Fällen einen erheblichen Performance-Zuwachs bedeutet.

Anbieter zum Thema

zu Matchmaker+

  1. Energie in der Software
  2. Brachenspezifische Perspektive
  3. Energiesparpotenziale identifizieren
  4. Software-Optimierung
  5. Kernel-Aktualisierung
  6. Linux-Power-Governor
  7. Interrupt-Handler
  8. Applikationsoptimierung
  9. Zusammenfassung

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Server, Datacenter

Matchmaker+