Hallo LUG!
Folgendes Problem:
Es gibt einen Server, der stellt eGroupware (Apache2 / MySQL / PHP5) für diverse Familienmitglieder bereit. Nun wird das Teil nicht rund um die Uhr gebraucht sondern sporadisch - quasi nicht planbar - immer mal eine halbe Stunde.
Mit diesen Voraussetzungen gilt es jetzt, die Frequency Scaling Fähigkeiten des verbauten AthlonXP-M zu nutzen. Bei Verwendung von powernowd habe ich folgendes Problem:
Durch die Anfrage an den Webserver habe ich kurzzeitig Last - powernowd schaltet die CPU um eine oder zwei Stufen hoch, dann passiert ein paar Minuten nichts (weil der User seinen Termin einträgt) und powernow schaltet wieder auf Minimum. Dann habe ich beim Speichern des Termins wieder kurz Last und powernow schaltet wieder etwas hoch. Dummerweise bringt das Hochfahren der CPU-Frequenz in diesem Fall gar nichts, weil es für die aktuelle Anfrage zu spät ist und vor der nächsten Anfrage wieder auf Minimalfrequenz runtergeschaltet wird.
Ich bräuchte also eine Lösung wo entweder ereignisorientiert (geht da bei PHP was?) die CPU-Frequenz angehoben wird oder wo powernow (oder vergleichbare Software) erst 30 Minuten nach der letzten Lastspitze wieder auf Minimal schaltet.
Gibt es Tools, die das von Haus aus können? Kann ich bei PHP ggf. einfach im Falle des Aufrufs einer Seite ein Bash-Script lokal ausführen (möglichst ohne große Änderungen an eGroupware)? Gibt es Ideen zu sonstigen Möglichkeiten?
Alex
Am Dienstag 27 November 2007 22:43:38 schrieb Alexander Tomisch:
Gibt es Tools, die das von Haus aus können? Kann ich bei PHP ggf. einfach im Falle des Aufrufs einer Seite ein Bash-Script lokal ausführen (möglichst ohne große Änderungen an eGroupware)? Gibt es Ideen zu sonstigen Möglichkeiten?
Ich würde es nicht anwendungsbezogen scripten, sondern an die Netzwerkübertragung koppeln. Statt Wake-on-LAN also erweitert zu ACPI-on-LAN. Das ist immerhin der früheste Moment, in dem du über interaktive Ereignisse informiert wirst. Wenn also der Apache schneller das Ereignis verarbeitet als der cpufreqd das Netzwerkereignis mitbekommt, schlägt alles andere auch fehl. Ich könnte mir ein kleines Userspace-Modul für iptables vorstellen, falls man anderweitig (über udev etc.) nicht an die Infos herankommt, welches mit hoher Priorität läuft und einfach die höchstmögliche Prozessorstufe in /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq einträgt.
(Das alles nur als Sammlung von Pseudoinstruktionen, es kann funktionieren oder auch nicht.)
Josef
Hallo!
Mit dem kernel-eigenen ondemand governor funktioniert es erstmal hinreichend gut - der Zeitunterschied zum performance-Betrieb beträgt hier nur noch ca. 0,2s und nicht mehr 3s.
Ich würde es nicht anwendungsbezogen scripten, sondern an die Netzwerkübertragung koppeln. Statt Wake-on-LAN also erweitert zu ACPI-on-LAN. Das ist immerhin der früheste Moment, in dem du über interaktive Ereignisse informiert wirst. Wenn also der Apache schneller das Ereignis verarbeitet als der cpufreqd das Netzwerkereignis mitbekommt, schlägt alles andere auch fehl. Ich könnte mir ein kleines Userspace-Modul für iptables vorstellen, falls man anderweitig (über udev etc.) nicht an die Infos herankommt, welches mit hoher Priorität läuft und einfach die höchstmögliche Prozessorstufe in /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq einträgt.
... die Idee klingt gut - nur scheint es ein passendes Modul nicht zu geben ... und selber machen scheitert an der Aufwand-Nutzen-Überlegung.
Danke erstmal
Alex
lug-dd@mailman.schlittermann.de