Betriebssysteme > Betriebssystem-Tips

Solaris 10 Power Management

(1/5) > >>

escimo:
Hallo zusammen,

da ich Solaris 10 u.a. auch auf einem Notebook mit Intel Centrino Duo nutze und gelegentlich ohne Steckdose auskommen muss, habe ich mich mal ein wenig in die Thematik Power Management "eingeäugelt":

Auslöser für die nähere "Beschäftigung" mit diesem Thema war ein Kapitel in dem folgenden WhitePaper: http://www.sun.com/x64/intel/solaris_on_xeon.pdf

Die folgenden Angaben sollen grob zeigen, wie sich die die PM-Konfiguration auf den Prozessortakt und damit auch auf den Leistungsbedarf eines Notebooks/PC's durchaus positiv auswirken kann:

Die Zusammenarbeit von Sun mit Intel brachte u.a. auch Funktionalitäten zum erweiterten Power-Management unter Solaris mit der Bezeichnung "Intel Demand Based Switching (DBS)" mit ein. DBS (auch unter "Enhanced SpeedStep technology" bekannt) ermöglicht Solaris die Taktfrequenz von Intel-basierenden, neueren Core-Prozessoren zu beeinflussen.

Um sich anzeigen zu lassen, ob Solaris die Taktfrequenz der genutzten Prozessor-Kerne dynamisch anpassen kann, ist folgendes Kommando hilfreich:


--- Zitat ---# kstat -m cpu_info -s supported_frequencies_Hz
module: cpu_info                        instance: 0
name:   cpu_info0                       class:    misc
            supported_frequencies_Hz        1000000000:1333000000:1833000000

module: cpu_info                        instance: 1
name:   cpu_info1                       class:    misc
            supported_frequencies_Hz        1000000000:1333000000:1833000000
--- Ende Zitat ---
Solaris 10 kann bei meinem mit CentrinoDuo-Prozessor ausgestatteten Notebook drei Taktfrequenzen setzen: 1GHz, 1.333 GHz sowie 1.833 GHz.

Um sich anzuzeigen, welche Taktfrequenz aktuell konfiguriert ist, dient das folgende Kommando:

--- Zitat ---kstat -m cpu_info -s current_clock_Hz
module: cpu_info                        instance: 0
name:   cpu_info0                       class:    misc
            current_clock_Hz                1833000000

module: cpu_info                        instance: 1
name:   cpu_info1                       class:    misc
            current_clock_Hz                1833000000
--- Ende Zitat ---
Aktuell "schlägt" die CPU mit rund 1.833 GHz Takt vor sich hin und verplempert kostbare Akku-Kapazität.

Um zu schauen, welche Power Management Konfiguration für das System gilt, hilf ein Blick in die Datei /etc/power.conf. In meiner Konfiguration waren die im WP genannten Parameter nicht standardmäßig eingetragen, also wurde das nachgeholt:

--- Zitat ---# Am Ende der Datei /etc/power.conf hinzufuegen:
cpupm enable
cpu-threshold 15s
--- Ende Zitat ---

Nach Editierung der Datei /etc/power.conf (unter root) muss die Änderung Solaris bekannt gemacht werden. Dazu ist ist erforderlich die Konfiguration neu einzulesen:

--- Zitat ---# pmconfig
--- Ende Zitat ---
Alternativ kann auch ein Neustart durchgeführt werden.

Nach spätestens 15s bei denen die CPU wenig bis nichts mehr zu tun bekommt, sollten sich Änderungen beim oben aufgeführten Parameter "current_clock_Hz" einstellen:

--- Zitat ---kstat -m cpu_info -s current_clock_Hz
module: cpu_info                        instance: 0
name:   cpu_info0                       class:    misc
            current_clock_Hz                1000000000

module: cpu_info                        instance: 1
name:   cpu_info1                       class:    misc
            current_clock_Hz                1000000000
--- Ende Zitat ---
Man kann also sehen, dass die Taktfrequenz des Notebooks beträchtlich herabgesetzt wurde.

Weitere Parameter die gesetzt werden können sind unter anderem:

* system-threshold <time>
* device-threshold phys-path <time>für "phys-path" kann z.B. ein symbolischer Link auf eine eine Gerätedatei dienen, wie z.B. die Festplatte: "device-threshold /dev/dsk/c1t0d0s0 5m"

Weitere Information in den Manual Pages:

* power.conf(4)
* pm(9P)
* pm-components(9P)
* removable-media(9P)
TODO: Laufzeit-Messung für Notebook unter vollgeladenem Akku-Betrieb (ohne Last) bei standardmäßiger PM-Konfig. und erweiterter PM-Konfig.

Viele Grüße,
escimo

Padde:

--- Zitat von: escimo am 02. Februar 2009, 13:10:14 ---Nach spätestens 15s bei denen die CPU wenig bis nichts mehr zu tun bekommt, sollten sich Änderungen beim oben aufgeführten Parameter "current_clock_Hz" einstellen:
--- Ende Zitat ---

Huch, 15 Sekunden sind für eine CPU ja eine Ewigkeit. Heißt das dann eigentlich auch, daß die CPU erst 15 Sekunden unter Last sein muß, damit wieder hochgetaktet wird? Das wäre ja völlig inakzeptabel.

Auf meinem Notebook mit einem T2300 taktet FreeBSD die CPU auf bis zu 125 MHz runter. Wenn ich da zuerst 15 Sekunden Last erzeugen müßte, damit das Ding wieder hochtaktet, gute Nacht... Als "Polling Interval" habe ich 100ms eingestellt, da man sogar beim Standardwert von 500ms schon deutlich bemerken konnte, daß die CPU zu träge hochtaktet (z.B. beim Scrollen von Webseiten). Und beim Runtertakten hast du 15 Sekunden lang unnötigerweise den vollen Takt, das reduziert die Akkulaufzeit.

Du solltest deinen Wert also deutlich unter 1 Sekunde setzen, um in der Praxis sowohl eine vernünftige Performance als auch eine akzeptable Akkulaufzeit zu erzielen. Man sollte es natürlich auch nicht übertreiben, sonst ist die CPU nur noch mit hoch- und runtertakten beschäftigt, aber selbst 1 Sekunde ist für eine CPU noch ziemlich viel Zeit.

Yoda:
Hi @escimo,

wo stellt man unter Solaris ein, welche Frequenzen er stufenweise verwenden soll, um die CPU runter zutakten?
Ich habe einen AMD X2 / 2x2,6GHz (Modell 5050e), Solaris zeigt mir aber mit allen von Dir genannten Kommandos nur 2,6GHz an.
Auch in keiner von Dir genannten Dateien fand ich einen Hinweis.

Gruß
Yoda

escimo:
Hallo Yoda,

Diese Funktionalität ist für alle AMD-CPU's mit "PowerNow!" sowie "Cool’n’Quiet" unter Solaris 10 seit Update 5 nutzbar:

http://blogs.sun.com/mhaywood/entry/powernow_for_solaris

Die AMD-CPU muss mindestens der Prozessor-Familie 16 (dezimal) bzw. 0x10 hexadezimal ) angehören:

--- Zitat ---for AMD processor families 10h
--- Ende Zitat ---

--- Zitat ---implementation                  x86 (chipid 0x0 AuthenticAMD 100F23 family 16 model 2 step 3 clock 2000 MHz)
--- Ende Zitat ---


@Padde:

--- Zitat von: Padde am 02. Februar 2009, 21:41:18 ---Heißt das dann eigentlich auch, daß die CPU erst 15 Sekunden unter Last sein muß, damit wieder hochgetaktet wird?
--- Ende Zitat ---
Der "cpu-threshold" gibt den Schwellwert für das Heruntertakten an, nicht für das "Aufwachen".

Grüße,
escimo

Yoda:

--- Zitat von: escimo am 24. Februar 2009, 11:35:47 ---Hallo Yoda,

Diese Funktionalität ist für alle AMD-CPU's mit "PowerNow!" sowie "Cool’n’Quiet" unter Solaris 10 seit Update 5 nutzbar:

http://blogs.sun.com/mhaywood/entry/powernow_for_solaris

Die AMD-CPU muss mindestens der Prozessor-Familie 16 (dezimal) bzw. 0x10 hexadezimal ) angehören:

--- Zitat ---for AMD processor families 10h
--- Ende Zitat ---

--- Zitat ---implementation                  x86 (chipid 0x0 AuthenticAMD 100F23 family 16 model 2 step 3 clock 2000 MHz)
--- Ende Zitat ---


Grüße,
escimo

--- Ende Zitat ---
Danke!


Auf der Seite steht:

--- Code: ---....
        supported_frequencies_Hz
1000000000:1200000000:1400000000:1700000000:2000000000

The existence of more than one frequency in the list above indicates that Solaris supports frequency scaling of the CPU.
....
--- Ende Code ---
Heißt das, wenn hier nur eine einzige Frequenz angezeigt wird, kann Solaris die CPU nicht runtertakten?
Bei mir steht hier nur eine Frequenz....
Dabei hat meine CPU "Cool’n’Quiet" und ich fahre Solaris 10 Update 6 ....???
Die CPU (Modell 5050e) ist erst seit (ich glaube) Oktober 2008 zu haben, also sollte sie eigentlich doch aktuell genug sein.
Ich kann erst heute Abend nach der "processor familie" sehen.

... schaaaaaaaaaaade ....

Gruß
Yoda

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln