ECS & ACPI
ECS & ACPI
Hallo,
ich brauche Rat bezüglich ECS (Beta2) und Acpi.
Ich hatte das Thema bereits mal bei os2world angesprochen (http://www.os2world.com/forum/index.php ... 0uc45kaa05)bina ber leider noch nicht wirklich weiter gekommen und möchte daher hier mal nachfragen.
Ich habe ein x61 mit installierter ecs (beta2) und dem neuesten ACPI von Arcae Noae.
Folgende Fragen habe ich : Im Bios gibt es die Möglichkeit Power Management ein oder auszuschalten, gibt es hierzu ein Empfehlung bei Benutzung von ACPI, aktueller Stand?
Bei mir tritt folgendes auf: Boote ich mit Power Management im Bios auf enabled und mit Netzbetrieb wird der Laptop sehr schnell 'heiß'. Und : Schalte ich nach dem Bootvorgang auf Akku um ist die Restlauzeit relativ gering. Boote ich gleich nur im Akku-Modus ist die Restlaufzeit wesentlich länger und die Temperatur im normalen Bereich.
Boote ich mit Power Management im Bios auf disabled habe ich das Problem mit der Temperatur nicht mehr, die Restlaufzeit bei Akkubetrieb ist aber zumindest geringer als mit Power Management enabled.
Ich habe noch eine dritte Variante: Ich habe statt acpi os2apic.psd verwendet und Power Management enabled.
(In dieser Konstellation kann ich den Bildschirm mit FN + Funktionstaste zB. dunkler oder heller einstellen, bei Umstellung auf Akku wir der Bildschirm automatisch dunkler. Ich kann mit FN+F7 den Bildschirm ausschalten bzw, einen externen Bildschirm anschliessen)
Natürlich kann ich so aber nicht mehr die Restlaufzeit der Batterie nicht mehr sehen (apm funktioniert nicht) und ich weiss nich welche grundsätzlichen Auswirkungen dies auf da System bzw. den Laptop hat.
Hat jemand vielleicht Ratschläge oder Empfehlungen?
Grüße
Holger
ich brauche Rat bezüglich ECS (Beta2) und Acpi.
Ich hatte das Thema bereits mal bei os2world angesprochen (http://www.os2world.com/forum/index.php ... 0uc45kaa05)bina ber leider noch nicht wirklich weiter gekommen und möchte daher hier mal nachfragen.
Ich habe ein x61 mit installierter ecs (beta2) und dem neuesten ACPI von Arcae Noae.
Folgende Fragen habe ich : Im Bios gibt es die Möglichkeit Power Management ein oder auszuschalten, gibt es hierzu ein Empfehlung bei Benutzung von ACPI, aktueller Stand?
Bei mir tritt folgendes auf: Boote ich mit Power Management im Bios auf enabled und mit Netzbetrieb wird der Laptop sehr schnell 'heiß'. Und : Schalte ich nach dem Bootvorgang auf Akku um ist die Restlauzeit relativ gering. Boote ich gleich nur im Akku-Modus ist die Restlaufzeit wesentlich länger und die Temperatur im normalen Bereich.
Boote ich mit Power Management im Bios auf disabled habe ich das Problem mit der Temperatur nicht mehr, die Restlaufzeit bei Akkubetrieb ist aber zumindest geringer als mit Power Management enabled.
Ich habe noch eine dritte Variante: Ich habe statt acpi os2apic.psd verwendet und Power Management enabled.
(In dieser Konstellation kann ich den Bildschirm mit FN + Funktionstaste zB. dunkler oder heller einstellen, bei Umstellung auf Akku wir der Bildschirm automatisch dunkler. Ich kann mit FN+F7 den Bildschirm ausschalten bzw, einen externen Bildschirm anschliessen)
Natürlich kann ich so aber nicht mehr die Restlaufzeit der Batterie nicht mehr sehen (apm funktioniert nicht) und ich weiss nich welche grundsätzlichen Auswirkungen dies auf da System bzw. den Laptop hat.
Hat jemand vielleicht Ratschläge oder Empfehlungen?
Grüße
Holger
sehr schwieriges Thema.Holgos2 » Sa 27. Feb 2016, 17:00 hat geschrieben:Hallo,
ich brauche Rat bezüglich ECS (Beta2) und Acpi.
Ich habe nur ein T60 bzw. T60p mit eCS am laufen, mein X61s läuft mit OS X und Linux, daher betreffen meine Aussagen nur auf die T60-Modelle, wobei die Hardware der X60/X61 sehr ähnlich ist.Ich habe ein x61 mit installierter ecs (beta2) und dem neuesten ACPI von Arcae Noae.
Ich lasse es grundsätzlich in den Default-Einstellungen, lediglich Seriell und Infrarot schalte ich ein und das TrackPad aus:Folgende Fragen habe ich : Im Bios gibt es die Möglichkeit Power Management ein oder auszuschalten, gibt es hierzu ein Empfehlung bei Benutzung von ACPI, aktueller Stand?
Was ist denn "sehr heiß"?Bei mir tritt folgendes auf: Boote ich mit Power Management im Bios auf enabled und mit Netzbetrieb wird der Laptop sehr schnell 'heiß'. Und : Schalte ich nach dem Bootvorgang auf Akku um ist die Restlauzeit relativ gering. Boote ich gleich nur im Akku-Modus ist die Restlaufzeit wesentlich länger und die Temperatur im normalen Bereich.
Mit XWorkplace, NeoWPS und dem Reactor-Temperatur-Widget habe ich meist knapp 70°C und der Lüfter läuft, wenn ich gar nichts gestartet habe geht das auch mal auf unter 60°C runter, der Lüfter läuft dennoch dauerhaft weiter.
Viel besser wird es möglicher Weise nicht werden.
Ein bisschen funktioniert Power Management auch mit ACPI, ohne wird natürlich mehr Strom verbraucht. Trotzdem ist das ACPI-Power Management noch weit weg von "gut", mit Windows oder Linux funktioniert das natürlich weit aus besser.Boote ich mit Power Management im Bios auf disabled habe ich das Problem mit der Temperatur nicht mehr, die Restlaufzeit bei Akkubetrieb ist aber zumindest geringer als mit Power Management enabled.
Das habe ich noch nie probiert, Sigurd hat ohne ACPI schon mal experimentiert, allerdings dürfte damit kein PowerManagement des Prozessors nicht unterstützt werden, ist also eher nicht wirklich empfehlenswert.Ich habe noch eine dritte Variante: Ich habe statt acpi os2apic.psd verwendet und Power Management enabled.
(In dieser Konstellation kann ich den Bildschirm mit FN + Funktionstaste zB. dunkler oder heller einstellen, bei Umstellung auf Akku wir der Bildschirm automatisch dunkler. Ich kann mit FN+F7 den Bildschirm ausschalten bzw, einen externen Bildschirm anschliessen)
Grüße,
Thorolf
Thorolf
Hallo Thorolf,
danke fü deine Antwort
Sehr heiß bedeutet die Temperatur steigt sehr schnell auf 89-90 Grad (ich benutze CPU Temperature statt dem Reactor-Widget, habe ich aber auch schon getestet, die angezeigte Terperatur ist identisch). Danach fällt die Temperatur auch wieder und pegelt sich so bei 60-70 ein, mir macht allerdings der rapide Anstiege direkt nach dem Bootvorgang Kopfzerbrechen.
Und dann beliebt ja noch das :Schalte ich nach dem Bootvorgang auf Akku um ist die Restlauzeit relativ gering.
Nochmal zur grundsätzlichen Probelmatik: Ich hatte bei meiner ersten Recherche folgendes Dokument gefunden:
http://de.ecomstation.ru/projects/acpit ... OSTIPS.TXT
Das Dokument bezieht sich natürlich auf die älteren ACPI-Versionen, ich finde nur leider für die neueren Versionen kein entsprechendes Dokument.
Jedenfalls:
4. Power management:
* Power Managment -- turn off
Ich weiß natürlich auch leider nicht, worin sich die neueren ACPI von den älteren unterscheiden
Grüße
Holger
Grüße
Holger
danke fü deine Antwort
Ja, diese Einstellungen habe ich auch. Wie gesagt, wenn ich mit diesen Einstellungen und 'Netzbetrieb' boote, habe ich das Temperaturproblemthorolf hat geschrieben:Ich lasse es grundsätzlich in den Default-Einstellungen, lediglich Seriell und Infrarot schalte ich ein und das TrackPad aus:
.thorolf hat geschrieben:Was ist denn "sehr heiß"?
Sehr heiß bedeutet die Temperatur steigt sehr schnell auf 89-90 Grad (ich benutze CPU Temperature statt dem Reactor-Widget, habe ich aber auch schon getestet, die angezeigte Terperatur ist identisch). Danach fällt die Temperatur auch wieder und pegelt sich so bei 60-70 ein, mir macht allerdings der rapide Anstiege direkt nach dem Bootvorgang Kopfzerbrechen.
Und dann beliebt ja noch das :Schalte ich nach dem Bootvorgang auf Akku um ist die Restlauzeit relativ gering.
Ich habe mir mit dem Tool Cpuman geholfen, damit kann ich nach einem vorgegebenen Zeitraum eine CPU bei Leerlauf ausschalten lassen.Unterscheidet sich das so sehr von dem Powermanagement mit ACPI?thorolf hat geschrieben: Ich habe noch eine dritte Variante: Ich habe statt acpi os2apic.psd verwendet und Power Management enabled.
(In dieser Konstellation kann ich den Bildschirm mit FN + Funktionstaste zB. dunkler oder heller einstellen, bei Umstellung auf Akku wir der Bildschirm automatisch dunkler. Ich kann mit FN+F7 den Bildschirm ausschalten bzw, einen externen Bildschirm anschliessen)
Das habe ich noch nie probiert, Sigurd hat ohne ACPI schon mal experimentiert, allerdings dürfte damit kein PowerManagement des Prozessors nicht unterstützt werden, ist also eher nicht wirklich empfehlenswert.
Nochmal zur grundsätzlichen Probelmatik: Ich hatte bei meiner ersten Recherche folgendes Dokument gefunden:
http://de.ecomstation.ru/projects/acpit ... OSTIPS.TXT
Das Dokument bezieht sich natürlich auf die älteren ACPI-Versionen, ich finde nur leider für die neueren Versionen kein entsprechendes Dokument.
Jedenfalls:
4. Power management:
* Power Managment -- turn off
Ich weiß natürlich auch leider nicht, worin sich die neueren ACPI von den älteren unterscheiden
Grüße
Holger
Grüße
Holger
Wo gibt es denn dieses Programm?
Micky
Micky
Hallo Micky,
http://www.os2site.com/sw/util/power/
Erwarte jetzt aber nicht zuviel. Das Programm macht eigentlich nichts anderes, als nach einer bestimmten Zeit in der die Tastatur nicht mehr benutzt wurde, wenn möglich, die CPU abzuschalten. Bei erneuter Tastenbenutzung wird die CPU wieder eingeschaltet. (Vielleicht habe ich mich da etwas ungenau ausgedrückt) Mir ging es nur darum, bei Verwendung von Os2apic.psd zu sehen, welche Möglichkeiten ich habe, ein 'Powermanagement' zu simulieren.Man kann natürlich auch mit der MCPUMON.EXE die CPU händisch abschalten (oder wahrscheinlich auch mit einem Script).Für mich war es so nur bequemer!
Naja, ich experimentiere weiter.
Grüße
Holger
Ich gehe mal davon aus, dass Du Cpu Man meinst?-micky hat geschrieben:Wo gibt es denn dieses Programm?
Micky
http://www.os2site.com/sw/util/power/
Erwarte jetzt aber nicht zuviel. Das Programm macht eigentlich nichts anderes, als nach einer bestimmten Zeit in der die Tastatur nicht mehr benutzt wurde, wenn möglich, die CPU abzuschalten. Bei erneuter Tastenbenutzung wird die CPU wieder eingeschaltet. (Vielleicht habe ich mich da etwas ungenau ausgedrückt) Mir ging es nur darum, bei Verwendung von Os2apic.psd zu sehen, welche Möglichkeiten ich habe, ein 'Powermanagement' zu simulieren.Man kann natürlich auch mit der MCPUMON.EXE die CPU händisch abschalten (oder wahrscheinlich auch mit einem Script).Für mich war es so nur bequemer!
Naja, ich experimentiere weiter.
Grüße
Holger
CPU's kann man nicht einfach "abschalten" um Energie zu sparen, sondern man muss sie in spezielle "S-States" setzen oder "HLT"-Befehle einfügen (das hat seinerzeit der gehackte Russen-Kernel mit einer bestimmten ACPI-Version mit dem Parameter "ExtraHLT" gemacht)Holgos2 » Mo 29. Feb 2016, 20:50 hat geschrieben:Ich gehe mal davon aus, dass Du Cpu Man meinst?
http://www.os2site.com/sw/util/power/
Erwarte jetzt aber nicht zuviel. Das Programm macht eigentlich nichts anderes, als nach einer bestimmten Zeit in der die Tastatur nicht mehr benutzt wurde, wenn möglich, die CPU abzuschalten. Bei erneuter Tastenbenutzung wird die CPU wieder eingeschaltet. (Vielleicht habe ich mich da etwas ungenau ausgedrückt) Mir ging es nur darum, bei Verwendung von Os2apic.psd zu sehen, welche Möglichkeiten ich habe, ein 'Powermanagement' zu simulieren.
Das schaltet eine CPU bzw. einen Kern ab, sofern das System von WarpServer-SMP unterstützt wird. Wenn das PowerManagement ordentlich funktioniert, spart man damit keinen Strom, ob es mit ACPI funktioniert und/oder einen Nutzen hat, vermag ich nicht zu sagen.Man kann natürlich auch mit der MCPUMON.EXE die CPU händisch abschalten (oder wahrscheinlich auch mit einem Script).Für mich war es so nur bequemer!
Wen es interessiert, hier noch zwei Links zum PowerManagement bei WikiPedia, einmal APM, also das was mit Warp 4, WSeB, MCP2R und eCS bis 1.2R dabei ist und für alte Rechner (ThinkPads bis T42/X32), vor der "Core Duo"-Architektur ziemlich gut funktioniert:
https://de.wikipedia.org/wiki/Advanced_Power_Management
Und dann noch ACPI, was man ab Core Duo braucht, also bei ThinkPads alles ab T60/X60 und was leider nach wie vor mehr schlecht als recht tut:
https://de.wikipedia.org/wiki/Advanced_ ... _Interface
Grüße,
Thorolf
Thorolf
Funktioniert der Speedstep Treiber (GSVDAEMN) auch ohne APM-Unterstützung? Auf neueren Mobilrechnern würde ich einfach das OS/2 in eine VM (funktioniert am zuverlässigsten unter Virtual PC) packen und man braucht weder ECS & ACPI. Weiterer Vorteil: Man kann auch mal schnell das integrierte Modem nutzen, wenn man noch ein Fax verschicken muß. Mit LVM und USB braucht man sich auch nicht mehr herumärgern.
Sicherlich gibt es auch Einsatzszenarien für ein natives OS/2, aber für diese Anforderungen (v.a. Timing) wird man sicherlich entsprechende Gerätschaften bereithalten.
Sicherlich gibt es auch Einsatzszenarien für ein natives OS/2, aber für diese Anforderungen (v.a. Timing) wird man sicherlich entsprechende Gerätschaften bereithalten.
meines Wissens nicht, aber das lasse ich mich gerne belehren.ak120 » Mi 2. Mär 2016, 19:42 hat geschrieben:Funktioniert der Speedstep Treiber (GSVDAEMN) auch ohne APM-Unterstützung?
Das wurde schon häufiger angedacht und ist möglicherweise die beste Option, native OS/2-Programme weiter zu benutzen. Viele verwenden OS/2 mittlerweile auch so, im Vollbildmodus merkt man kaum, das man an einer VM sitzt.Auf neueren Mobilrechnern würde ich einfach das OS/2 in eine VM (funktioniert am zuverlässigsten unter Virtual PC) packen und man braucht weder ECS & ACPI. Weiterer Vorteil: Man kann auch mal schnell das integrierte Modem nutzen, wenn man noch ein Fax verschicken muß. Mit LVM und USB braucht man sich auch nicht mehr herumärgern.
Allerdings fehlt hier noch eine gute Gastunterstützung, sodass man externe Medien, wie z.B. USB-Sticks durchgereicht bekommt oder irgendwie anders komfortabel darauf zugreifen kann.
Zudem stellt sich die Frage, weshalb ich veraltet, weniger stabile und sogar unvollständige Portierungen von Anwendungen nach OS/2 in der VM benutzen sollte, wenn ich die nativ auf dem gleichen Rechner im Host viel besser bekommen kann. D.h. das OS/2 würde nur für wenige Anwendungen überhaupt gebraucht, aber eine ordentliche Gastunterstüzung wäre hier ebenso notwendig.
Das trifft sicher auf die eine oder andere Nutzung im Firmenumfeld zu, da wird OS/2 ja tw. immer noch zur Maschinen-Steuerung usw. genutzt, aber im "Office-Bereich" dürfte das völlig unkritisch sein.Sicherlich gibt es auch Einsatzszenarien für ein natives OS/2, aber für diese Anforderungen (v.a. Timing) wird man sicherlich entsprechende Gerätschaften bereithalten.
Grüße,
Thorolf
Thorolf
Unter Virtual PC 2007 sind die mitgelieferten Gasterweiterungen ausreichend. Man greift einfach auf eine Verzeichnisfreigebe des Wirts zurück, welche auch das Wurzelverzeichnis eines USB-Speichergerätes sein kann. Entsprechende Benutzerrechte vorrausgesetzt, kann auch auf eine gesamte physische Einheit zugegriffen werden. Entsprechende Device Server für USB-Storage lösen das ganze Problem jedoch eleganter und plattform-unabhängig.Allerdings fehlt hier noch eine gute Gastunterstützung, sodass man externe Medien, wie z.B. USB-Sticks durchgereicht bekommt oder irgendwie anders komfortabel darauf zugreifen kann.
USB-Modems funktionieren über die virtuellen COM-Ports. Tastaturen und Zeigereinheiten stellen ohnehin kein Problem dar. In der Praxis sind die Härtefälle meist USB-Dongles (die unbedingt lokal angeschlossen sein sollen) und USB-Seriell-Adapter. Zumindest letztere können in vielen Umgebungen entweder durch Device Server oder Terminal Server (also über LAN) ersetzt werden. Hobbyisten können den USB-Stöpsel (funktioniert auch mit Kameras) einfach oft in die Router-Plastikbox stecken und per FTP oder LAN-Freigabe die benötigten Daten holen, was meist nicht dokumentiert ist - im Zweifelsfall hilft ein Portscan.
Du beantwortest es ja schon selbst - gerade weniger stabile Programme sind m.E. in einer VM deutlich besser aufgehoben. Eigentlich geht es vorrangig um die Weiternutzung bestehender Programme. Gastunterstützung ist für Entwickler oder Servicetechniker vielleicht wichtig, aber man kommt oft auch ohne aus mit teilweise unerwartet guten Ergebnissen. Wichtiger wäre eine gründliche Abarbeitung der bestehenden Fehler (z.B. bei VirtualBox).Zudem stellt sich die Frage, weshalb ich veraltet, weniger stabile und sogar unvollständige Portierungen von Anwendungen nach OS/2 in der VM benutzen sollte, wenn ich die nativ auf dem gleichen Rechner im Host viel besser bekommen kann. D.h. das OS/2 würde nur für wenige Anwendungen überhaupt gebraucht, aber eine ordentliche Gastunterstüzung wäre hier ebenso notwendig.
Hallo zusammen,
für diejenigen, die es interessiert habe ich hier ein paar technische Details zu ACPI unter ECS unter Power-Management Gesichtspunkten:
1.) Idle und Offline:
Idle bedeutet im Folgenden, dass der Scheduler keine Arbeit für eine CPU findet - entweder weil es keine gibt oder weil alle Threads an
eine andere CPU gebunden sind (mit SetThreadAffinity). Offline bedeutet, dass eine CPU vom Scheduler abgemeldet wurde und keine
Arbeit mehr zugewiesen bekommt (z.B. über die "Prozessorüberwachung").
2.) Behandlung von Idle im ACPI.PSD:
Der Treiber verwendet einen Kernel-Patch, um Zugriff auf die CPU in der Idle-Loop zu bekommen. Die Idle-Loop ist der Programmteil im
Scheduler, wo die CPU nach neuer Arbeit fragt. Was im Treiber passiert, hängt von der CPU ab:
CPU0 wird per HLT-Befehl angehalten, bis der nächste Hardware Interrupt eintrifft (spätestens beim nächsten Tick des Timers)
CPU1 bis n läuft einfach durch, d.h. zurück in den Scheduler und von dort zurück zum Treiber (kein Energiesparmodus).
3.) Behandlung von Offline im ACPI.PSD:
Der Treiber verwendet auch hier einen Kernel-Patch, um die CPU abzufangen. Hier wird bei allen CPU1 bis n die HLT-Instruktion
verwendet (CPU0 lässt sich nicht in den Offline-Modus versetzen). Das Aufwecken wird dann durch einen IPI (Inter-Prozessor-Interrupt)
erledigt.
4.) Bedeutung von HLT:
Die Instruktion hält einfach die Programmausführung an - in der ACPI-Systematik ist das der Zustand C1. Alle Clocks im Core sind in Betrieb.
Die Energieeinsparung ist minimal. Es gibt CPU's und Chipsets, die C1 automatisch in C1e "übersetzen". Dann werden bei HLT zusätzlich
die Core-Spannung gesenkt und die Taktrate reduziert. Das Ganze lässt sich durch einen Interrupt beenden.
5.) Probleme:
In der Idle-Loop lassen sich CPU1 bis n nicht via HLT anhalten, weil sie nie wieder aufwachen würden. Der Kernel sendet keinen IPI wenn
es Arbeit gibt. Was das konkret bedeutet, hängt von der CPU-Architektur ab. Ein Intel Core Duo hat zwei Cores und keine Hyper-Threads,
d.h. der Core von CPU0 geht in den Modus C1e, der Core von CPU1 verbraucht weiter Strom als wäre nichts. Ein Core 5 mit zwei Cores
mit jeweils 2 Hyperthreads kann maximal den ersten Thread des ersten Cores in C1e nehmen - der Rest läuft weiter. Weil der zweite Thread
des ersten Core weiterläuft, kann der Core nicht in C1e gehen - es gibt gar keine Einsparung.
Die einzige Möglichkeit, das zu verbessern ist - entweder die nicht benötigten CPU's in der Prozessorüberwachung abzuschalten oder
in der ACPID.cfg das PowerManagement einzuschalten und den PreferredMode=Power zu wählen.
Das Throtteln=Drosseln des Prozessors via ClockStop bringt auf modernen CPU's leider nicht wirklich etwas.
Der im APM-Teil des DDK beschriebene 32-Bit-Zeiger, den man für das Umleiten der Idle-Loop in einen Treiber verwenden kann, funktioniert
nur für UNI und W4-Kernel, der SMP-Kernel verwendet den Zeiger nicht.
6.) Das BIOS:
Neben dem HLT-Befehl und den Sleep-States (dazu gleich mehr) kennen alle moderneren CPU's auch noch Power-States. Das ist praktisch
dasselbe wie Speed-Stepping: Entsprechend der Last wird die Frequenz und die Spannung im Core eingestellt. Kleinere Spannung und
kleinere Frequenz ergeben weniger Stromverbrauch bei gleicher Arbeitsmenge, auch wenn diese langsamer ausgeführt wird. Bei maximaler
Spannung kennen einige CPU's auch noch einen Turbo-Modus - wenn nicht alle Cores auf dem Die (das ist der eigentliche Chip) voll in Betrieb
sind, kann die in den inaktiven Cores gesparte Energie auf den aktiven Core umgeleitet werden - wodurch dieser schneller laufen kann.
Das BIOS kann den Power-State des Prozessors einstellen, normalerweise erkennt das BIOS auch, ob ein Netzteil angeschlossen ist.
Allerdings ist die BIOS-Unterstützung eher rudimentär und wohl eher dafür gemacht, überhaupt ein OS installieren zu können.
Das BIOS hat unter ECS keine valide Möglichkeit zu messen, wie beschäftigt eine CPU ist. Und auf meinem X201 werden die Objekte,
die ein ACPI-Treiber bräuchte um z.B. Power States zu setzen gar nicht im ACPI-Baum angezeigt. Das klappt erst, wenn man dem BIOS
"sagt", dass man die Power-States selbst steuern möchte (via _OSC oder _PDC) - das wird aber zumindest in den mir bekannten Versionen
des ACPI.PSD nicht verwendet.
7.) Möglichkeiten:
Wenn man sich auf moderne CPU's beschränkt, gibt es eine Möglichkeit, auch unter ECS ein gutes Powermanagement hinzubekommen.
Die Instruktionen dazu heißen MONITOR und MWAIT. Dazu setzt man mittels MONITOR einen Zeiger auf die Variable im Kernel, wo der
Scheduler die Adresse des nächsten Thread ablegt. Sobald diese Variable beschrieben wird - was immer dann passiert, wenn es neue Arbeit
gibt - wird die CPU geweckt. Somit kann man alle CPU's schlafen schicken und nicht nur die CPU0.
Mit MWAIT kann man zusätzlich angeben, wie tief die CPU schlafen soll (die "Sollstufe" kann man statistisch ermitteln). Tieferer Schlaf
bedeutet, längere Zeit zum aufwachen, aber höhere Energieeinsparung. Das bringt auf meinem X201 eine Reduktion der Leistung von
21 Watt auf rund 15 Watt.
Großer Nachteil: So einen Treiber kann man schreiben, aber er ist Herstellerabhängig (Intel/AMD) und solange es keine offizielle Möglichkeit
im ACPI.PSD gibt, die Kontrolle der Idle-Loop zu übernehmen - ein versionsspezifischer Hack. Ich habe versucht, das mit David zu
besprechen, aber entweder ist der zu beschäftigt um meine Mails genau zu lesen oder mein Englisch ist zu schlecht.
8.) Kleine Warnung:
Diejenigen, die den Testkernel von mir noch ausprobieren (Version 14.107): Der Kernel hat einen Bug, die ACPI-Interrupts kommen nicht
mehr im ACPI.PSD an. Die Folgen sind, dass z.B. die Helligkeit der Hintergrundbeleuchtung nicht mehr einstellbar ist. Das betrifft aber
ausschließlich diejenigen, die diesen Kernel verwenden!
Das Problem ist in 14.108 behoben.
Grüße (auch) Holger
für diejenigen, die es interessiert habe ich hier ein paar technische Details zu ACPI unter ECS unter Power-Management Gesichtspunkten:
1.) Idle und Offline:
Idle bedeutet im Folgenden, dass der Scheduler keine Arbeit für eine CPU findet - entweder weil es keine gibt oder weil alle Threads an
eine andere CPU gebunden sind (mit SetThreadAffinity). Offline bedeutet, dass eine CPU vom Scheduler abgemeldet wurde und keine
Arbeit mehr zugewiesen bekommt (z.B. über die "Prozessorüberwachung").
2.) Behandlung von Idle im ACPI.PSD:
Der Treiber verwendet einen Kernel-Patch, um Zugriff auf die CPU in der Idle-Loop zu bekommen. Die Idle-Loop ist der Programmteil im
Scheduler, wo die CPU nach neuer Arbeit fragt. Was im Treiber passiert, hängt von der CPU ab:
CPU0 wird per HLT-Befehl angehalten, bis der nächste Hardware Interrupt eintrifft (spätestens beim nächsten Tick des Timers)
CPU1 bis n läuft einfach durch, d.h. zurück in den Scheduler und von dort zurück zum Treiber (kein Energiesparmodus).
3.) Behandlung von Offline im ACPI.PSD:
Der Treiber verwendet auch hier einen Kernel-Patch, um die CPU abzufangen. Hier wird bei allen CPU1 bis n die HLT-Instruktion
verwendet (CPU0 lässt sich nicht in den Offline-Modus versetzen). Das Aufwecken wird dann durch einen IPI (Inter-Prozessor-Interrupt)
erledigt.
4.) Bedeutung von HLT:
Die Instruktion hält einfach die Programmausführung an - in der ACPI-Systematik ist das der Zustand C1. Alle Clocks im Core sind in Betrieb.
Die Energieeinsparung ist minimal. Es gibt CPU's und Chipsets, die C1 automatisch in C1e "übersetzen". Dann werden bei HLT zusätzlich
die Core-Spannung gesenkt und die Taktrate reduziert. Das Ganze lässt sich durch einen Interrupt beenden.
5.) Probleme:
In der Idle-Loop lassen sich CPU1 bis n nicht via HLT anhalten, weil sie nie wieder aufwachen würden. Der Kernel sendet keinen IPI wenn
es Arbeit gibt. Was das konkret bedeutet, hängt von der CPU-Architektur ab. Ein Intel Core Duo hat zwei Cores und keine Hyper-Threads,
d.h. der Core von CPU0 geht in den Modus C1e, der Core von CPU1 verbraucht weiter Strom als wäre nichts. Ein Core 5 mit zwei Cores
mit jeweils 2 Hyperthreads kann maximal den ersten Thread des ersten Cores in C1e nehmen - der Rest läuft weiter. Weil der zweite Thread
des ersten Core weiterläuft, kann der Core nicht in C1e gehen - es gibt gar keine Einsparung.
Die einzige Möglichkeit, das zu verbessern ist - entweder die nicht benötigten CPU's in der Prozessorüberwachung abzuschalten oder
in der ACPID.cfg das PowerManagement einzuschalten und den PreferredMode=Power zu wählen.
Das Throtteln=Drosseln des Prozessors via ClockStop bringt auf modernen CPU's leider nicht wirklich etwas.
Der im APM-Teil des DDK beschriebene 32-Bit-Zeiger, den man für das Umleiten der Idle-Loop in einen Treiber verwenden kann, funktioniert
nur für UNI und W4-Kernel, der SMP-Kernel verwendet den Zeiger nicht.
6.) Das BIOS:
Neben dem HLT-Befehl und den Sleep-States (dazu gleich mehr) kennen alle moderneren CPU's auch noch Power-States. Das ist praktisch
dasselbe wie Speed-Stepping: Entsprechend der Last wird die Frequenz und die Spannung im Core eingestellt. Kleinere Spannung und
kleinere Frequenz ergeben weniger Stromverbrauch bei gleicher Arbeitsmenge, auch wenn diese langsamer ausgeführt wird. Bei maximaler
Spannung kennen einige CPU's auch noch einen Turbo-Modus - wenn nicht alle Cores auf dem Die (das ist der eigentliche Chip) voll in Betrieb
sind, kann die in den inaktiven Cores gesparte Energie auf den aktiven Core umgeleitet werden - wodurch dieser schneller laufen kann.
Das BIOS kann den Power-State des Prozessors einstellen, normalerweise erkennt das BIOS auch, ob ein Netzteil angeschlossen ist.
Allerdings ist die BIOS-Unterstützung eher rudimentär und wohl eher dafür gemacht, überhaupt ein OS installieren zu können.
Das BIOS hat unter ECS keine valide Möglichkeit zu messen, wie beschäftigt eine CPU ist. Und auf meinem X201 werden die Objekte,
die ein ACPI-Treiber bräuchte um z.B. Power States zu setzen gar nicht im ACPI-Baum angezeigt. Das klappt erst, wenn man dem BIOS
"sagt", dass man die Power-States selbst steuern möchte (via _OSC oder _PDC) - das wird aber zumindest in den mir bekannten Versionen
des ACPI.PSD nicht verwendet.
7.) Möglichkeiten:
Wenn man sich auf moderne CPU's beschränkt, gibt es eine Möglichkeit, auch unter ECS ein gutes Powermanagement hinzubekommen.
Die Instruktionen dazu heißen MONITOR und MWAIT. Dazu setzt man mittels MONITOR einen Zeiger auf die Variable im Kernel, wo der
Scheduler die Adresse des nächsten Thread ablegt. Sobald diese Variable beschrieben wird - was immer dann passiert, wenn es neue Arbeit
gibt - wird die CPU geweckt. Somit kann man alle CPU's schlafen schicken und nicht nur die CPU0.
Mit MWAIT kann man zusätzlich angeben, wie tief die CPU schlafen soll (die "Sollstufe" kann man statistisch ermitteln). Tieferer Schlaf
bedeutet, längere Zeit zum aufwachen, aber höhere Energieeinsparung. Das bringt auf meinem X201 eine Reduktion der Leistung von
21 Watt auf rund 15 Watt.
Großer Nachteil: So einen Treiber kann man schreiben, aber er ist Herstellerabhängig (Intel/AMD) und solange es keine offizielle Möglichkeit
im ACPI.PSD gibt, die Kontrolle der Idle-Loop zu übernehmen - ein versionsspezifischer Hack. Ich habe versucht, das mit David zu
besprechen, aber entweder ist der zu beschäftigt um meine Mails genau zu lesen oder mein Englisch ist zu schlecht.
8.) Kleine Warnung:
Diejenigen, die den Testkernel von mir noch ausprobieren (Version 14.107): Der Kernel hat einen Bug, die ACPI-Interrupts kommen nicht
mehr im ACPI.PSD an. Die Folgen sind, dass z.B. die Helligkeit der Hintergrundbeleuchtung nicht mehr einstellbar ist. Das betrifft aber
ausschließlich diejenigen, die diesen Kernel verwenden!
Das Problem ist in 14.108 behoben.
Grüße (auch) Holger
Danke für diese Erläuterungen, Holger!
Als ich letztes Jahr während warpstock Europe David A. gezeigt hatte, das das damalige ACPI nicht auf dem Vaio funktioniert, hatte ich ihm auch das kleine Zusatzprogramm gezeigt, mit dem ich die zusätzlichen Kernel manuell abschalten konnte. Er meinte aber, dies würde wenig Sinn machen, da man diese auch wieder manuell einschalten müsste. Jedenfalls hatte er dann gesehen, warum das bei mir nicht lief, ich hatte ja OS/2 und nicht eCS und das damalige ACPI setzte noch ein Verzeichnis \ECS\Install voraus, das es bei mir gar nicht gab
Jetzt ist diese Abfrage ja entfernt.
Ich hätte Interesse an Deinem neuen Kernel 14.108, ich habe ja - wie Mike mit seinem X250, einen Prozessor der relativ aktuellen Broadwell Reihe am Start (bei mir der i7-5600U), da kann ich gerne für Dich Tests durchführen!
Viele Grüße
Sigurd
Als ich letztes Jahr während warpstock Europe David A. gezeigt hatte, das das damalige ACPI nicht auf dem Vaio funktioniert, hatte ich ihm auch das kleine Zusatzprogramm gezeigt, mit dem ich die zusätzlichen Kernel manuell abschalten konnte. Er meinte aber, dies würde wenig Sinn machen, da man diese auch wieder manuell einschalten müsste. Jedenfalls hatte er dann gesehen, warum das bei mir nicht lief, ich hatte ja OS/2 und nicht eCS und das damalige ACPI setzte noch ein Verzeichnis \ECS\Install voraus, das es bei mir gar nicht gab
![Zwinkern ;)](./images/smilies/icon_e_wink.gif)
Jetzt ist diese Abfrage ja entfernt.
Ich hätte Interesse an Deinem neuen Kernel 14.108, ich habe ja - wie Mike mit seinem X250, einen Prozessor der relativ aktuellen Broadwell Reihe am Start (bei mir der i7-5600U), da kann ich gerne für Dich Tests durchführen!
Viele Grüße
Sigurd
OS/2 versus Hardware - Maximum Warp!
Hallo Holger (auch) ![Lächeln :-)](./images/smilies/icon_e_smile.gif)
vielen Dank für Deine ausführliche Erklärung zu ACPI, immerhin gibt es hier noch jemanden, der sich wirklich damit auskennt.
Damit ist zu hoffen, das es vielleicht irgendwann mal einen funktionierenden ACPI-Treiber gibt.
Unverständlich ist für mich allerdings, das David nicht zu reagieren scheint ...
![Lächeln :-)](./images/smilies/icon_e_smile.gif)
vielen Dank für Deine ausführliche Erklärung zu ACPI, immerhin gibt es hier noch jemanden, der sich wirklich damit auskennt.
Damit ist zu hoffen, das es vielleicht irgendwann mal einen funktionierenden ACPI-Treiber gibt.
Unverständlich ist für mich allerdings, das David nicht zu reagieren scheint ...
Grüße,
Thorolf
Thorolf
Hier nochmal ein aktuelles Bild vom T450s mit neuestem ACPI:
- die Kernel werden "sauber" ein und ausgeschaltet
- Temperatur (Oben Rechts) - pendelt zwischen 40 und maximal 65 Grad Celsius
- Lüfter - springt an, wenn die Temperatur so über 50 - 55 geht, schaltet sich dann aber auch wieder ab, kaum hörbar
Soweit bin ich damit eigentlich ganz zufrieden, kann aber leider keine Angaben zum Stromverbrauch machen oder ob die Prozessoren wirklich ausgeschaltet sind, die Leistung geht jedenfalls im XCenter bei den drei hinteren zuverlässig auf 0,0 %). Das Programm von dem ich sparch, welches ich zuvor manuell zum Abschalten benutzt habe heißt "setproc".
(Man beachte bitte die - nach meiner Meinung - wunderbar klare und saubere Schriftdarstellung im Firefox 38!)
- die Kernel werden "sauber" ein und ausgeschaltet
- Temperatur (Oben Rechts) - pendelt zwischen 40 und maximal 65 Grad Celsius
- Lüfter - springt an, wenn die Temperatur so über 50 - 55 geht, schaltet sich dann aber auch wieder ab, kaum hörbar
Soweit bin ich damit eigentlich ganz zufrieden, kann aber leider keine Angaben zum Stromverbrauch machen oder ob die Prozessoren wirklich ausgeschaltet sind, die Leistung geht jedenfalls im XCenter bei den drei hinteren zuverlässig auf 0,0 %). Das Programm von dem ich sparch, welches ich zuvor manuell zum Abschalten benutzt habe heißt "setproc".
(Man beachte bitte die - nach meiner Meinung - wunderbar klare und saubere Schriftdarstellung im Firefox 38!)
OS/2 versus Hardware - Maximum Warp!
Nur, dass keine Missverständnisse entstehen: David hat reagiert - war sehr bemüht. Aber wir haben uns nicht richtig verstanden. Ich wollte von Ihm eine valide Möglichkeit, die Idle-Loop aus dem ACPI.PSD auf meinen Code umzuleiten - er wollte meinen Code in ACPI.PSD einbauen. Im Grunde hätte ich da nichts dagegen, aber man braucht einiges "drumherum", dass das funktioniert (und es würde aktuell den ACPI.PSD Intel-spezifisch machen - das kann es nicht sein). Ich stehe mit meinen Versuchen noch ziemlich am Anfang und es wäre nicht gut, in dem Entwicklungsstadium etwas in den ACPI.PSD einzubauen.thorolf » Mi 9. Mär 2016, 00:21 hat geschrieben:
Unverständlich ist für mich allerdings, das David nicht zu reagieren scheint ...
Komme gerne darauf zurück!Sigurd hat geschrieben: Ich hätte Interesse an Deinem neuen Kernel 14.108, ich habe ja - wie Mike mit seinem X250, einen Prozessor der relativ aktuellen Broadwell Reihe am Start (bei mir der i7-5600U), da kann ich gerne für Dich Tests durchführen!
Holger
ahh, OK, hatte ich anders verstanden.Holger » Mi 9. Mär 2016, 19:01 hat geschrieben:Nur, dass keine Missverständnisse entstehen: David hat reagiert - war sehr bemüht. Aber wir haben uns nicht richtig verstanden.
Schwierig, natürlich muss ACPI auf allen Systemen laufen, egal was für eine CPU, aber warum sollte man nicht zusätzlich Funktionen nutzen, die immerhin bei den meisten Rechnern deutliche Vorteile für das PowerManagement bieten?Ich wollte von Ihm eine valide Möglichkeit, die Idle-Loop aus dem ACPI.PSD auf meinen Code umzuleiten - er wollte meinen Code in ACPI.PSD einbauen. Im Grunde hätte ich da nichts dagegen, aber man braucht einiges "drumherum", dass das funktioniert (und es würde aktuell den ACPI.PSD Intel-spezifisch machen - das kann es nicht sein).
Es ist ja leider so, das Intel den Wettbewerb mit allen legalen und illegalen Mitteln kaputt gemacht hat und AMD "raus gefault" hat.
Und weil praktisch alle "ernstzunehmenden" Rechner, v.a. Laptops, Intel CPUs haben, sollte man zumindest diese doch bestmöglich unterstützen, bei den Ressourcen die es im OS/2-Umfeld noch gibt, kann ohnehin nur noch eine kleine Auswahl an Hardware sinnvoll unterstützt werden.
Grüße,
Thorolf
Thorolf