Virtualisierung stoppen!

Trotz der provokativem Überschrift werde ich einer der letzten sein, der dafür plädiert weniger zu virtualisieren – ganz im Gegenteil. In Zeiten von IaaS, PaaS, SaaS geht eigentlich nichts ohne Virtualsierung. Ob Vollvirtualsierung, Paravirtualisierung oder Container-based-Virtualisierung die Möglichkeiten sind nahezu grenzenlos, die aufsetzenden Frameworks unzählig.
In produktiven Umgebungen mit hoher und unterschiedlichster Workload und viel gemeinsam genutzten Infrastrukturkomponenten bzw. Ressourcen ist es deshalb umso wichtiger einzelne virtuelle Maschinen oder Container zu “stoppen” besser gesagt zu drosseln. Natürlich kann man mit mehr Hardware aufkeimende Engpässe entsprechend ausdehnen. Oft sind aber kleine und ungewollte Verhalten der Auslöser für querschießende Prozesse, die parallel ausgeführte Maschinen beeinflussen und somit die Qualität des generellen Services beeinflussen.
Drosseln kann man u.a. CPU Zeit, Memory, IO auf Blockdevices, IO auf NICs. Wie immer gibt es mehrere Möglichkeiten entsprechende Limits zu setzen. Pauschal lässt sich mit cgroups über die Virtualsierungstechnologien hinweg gut und effizient drosseln. Für KVM bzw. Qemu sind die eingebauten Features die effizientesten. Beim aktiven Drosseln muss der CPU des Hosts entsprechend arbeiten und ist laut IBM hier einen Tick effizienter bei Qemu-capped im Vergleich zu cgroup-capped.
KVM Prozesse können mit libvirt auch zur Laufzeit gedrosselt werden. Die Bandbreite der ersten Festplatte einer KVM-VM würde man mit Hilfe von virsh wie folgt auf 10MB/s und 50iops drosseln:
virsh blkdeviotune $virshid $name --live $total_bytes_sec $total_iops_sec
virsh blkdeviotune 123 vda --live 10240000 50

Das Cloud-Computing Framework OpenNebula wird in seiner nächsten Version ebenfalls Funktionen zur Drosselung bereitstellen.
Wem das alles zu umständlich ist, nutzt einfach das folgende funktionierende aber nicht ganz ernstgemeinte Command:
while true; do kill -STOP $ID; sleep 1; kill -CONT $ID; done

Sebastian Saemann
Sebastian Saemann
Head of Managed Services

Sepp kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.

Hilfe, mein Notebook brennt!

Der ein oder andere wird es kennen: draußen scheint die Sonne, die Zimmertemperatur gleicht sich der Außentemperatur an und das eigene Notebook wird unter Last langsam aber sicher heißer als es einem selbst lieb ist. Wer dann noch rechenintensive Anwendungen ausführt, wird schnell einen Schwund an Leistung feststellen, denn nahezu jede handelsübliche CPU drosselt sich zu ihrem eigenen Schutz ab einer bestimmten Temperatur nach unten (heat Throttling). So ist bei den heutigen Intel i-Prozesorreihe vom Werk aus die Temperaturgrenze bei 85 Grad angesetzt. Wenn dann auch noch die Umgebungstemperatur um die 30 Grad liegt, ist bereits im Idle-Zustand schnell über die Hälfte dieser Grenztemperatur erreicht. Doch wie kann man jetzt dafür sorgen, dass auch bei so einem tollen Wetter die volle Leistung des Notebooks gewährleistet wird?

  • Automatische Übertaktung deaktivieren/verhindern! Viele der heutigen Prozessoren übertakten sich selbst, sobald sie eine hohe Auslastung erreichen. Damit soll “kurzzeitig” mehr Leistung zur Verfügung gestellt werden. Allerdings steigt durch dieses Feature die Temperatur noch schneller auf ein kritisches Level, was bei fehlender entsprechender Kühlung schneller zum Throttling führt. Bei Intel-Prozessoren nennt sich dieses Feature “Intel Turbo Boost”, bei AMD equivalent “AMD Turbo Core”. Da die Übertaktung üblicherweise bei einer hohen Auslastung (und da reicht es bereits wenn diese nur kurz auftritt), kann man sich unter Windows eines einfachen Tricks bedienen: Man limitiert unter den erweiterten Energieoptionen die maximale CPU-Auslastung auf einen niedrigeren Wert. Bereits eine Limitierung auf 95% verhindert größtenteils die Übertaktung bei kaum spürbarer niedrigerer und konstant bleibender Leistung. Unter Linux kann mithilfe des Pakets cpulimit die Auslastung von bestimmten Prozessen begrenzt werden. Dies ist allerdings kein Garant dafür, dass man damit die Übertaktung umgeht, denn es kommen noch andere Faktoren hinzu (Stichwort: Thermal Design Power). Wer auf der sicheren Seite sein möchte kann üblicherweise die automatische Übertaktung im BIOS des Systems deaktivieren.
  • Wärmeleitpaste auswechseln! Die Wärmeleitpaste ist eine nicht zu unterschätzende Komponente eines jeden Rechners. Besonders bei langer intensiver Nutzung lässt die Leitfähigkeit dieser nach und sorgt so für höhere Kerntemperaturen. Wer also das auseinander schrauben seines Notebooks nicht fürchtet, sollte ein Auswechseln der Paste in Betracht ziehen (da häufig auch die der Hersteller ihre Mängel hat). Richtig durchgeführt können so bis zu 10 Grad eingespart werden. Ich selbst habe die Arctic Cooling MX-4 verwendet und kann diese weiterempfehlen. Durch den erhöhten Silberanteil ist diese etwas langlebiger als beispielsweise das MX-2. Aber auch andere größere Marken haben ihre Vorteile, wodurch man bei der Auswahl wenig falsch machen kann.
  • Für eine geeignete Unterlage sorgen! Viele Notebooks haben auf der Unterseite Lüftungsein- bzw ausgänge. Oft hilft bereits eine leichte Anhebung des Notebooks(z.b. mithilfe eines Buches), um so für eine bessere Luftzirkulation zu sorgen. Ansonsten gibt es auch sogenannte Coolpads, welche diese Aufgabe übernehmen und mit zusätzlichen Lüftern unterstützen. Empfehlenswert finde ich dabei das Cooler Master NotePal U2 bzw U3 (je nach Größe des Notebooks), da es komplett aus Aluminium besteht und bei Bedarf auch einfach als Schutzcase umfunktioniert werden kann.

Sollte das alles nicht ausreichen, um das Notebook kühler zu halten, hilft wohl nur noch der Kühlschrank während der rechenintensiven Zeiten. 😉