Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Assembler im Kernel-Mode (https://www.delphipraxis.net/69978-assembler-im-kernel-mode.html)

Codewalker 23. Mai 2006 11:45

Re: Assembler im Kernel-Mode
 
Ich merk schon... das wird nicht so einfach. Ich habe mir auch schon CPUCool angesehen, aber ich möchte das selbst schreiben, weil ich die Funktion mit einigen anderen in mein Programm einbinden will. Dann werd ich mich da wohl durchbeißen müssen. Gibt's denn keine Beispiele zu den Stromsparmodi die CPUCool einsetzt. (Das System ist ein kleiner Server mit Xeon-Prozessor).


@Frickeldrecktuxer_TM:
Ich will den Programmen ja nicht die Arbeitsgrundlage entziehen, sondern es soll nur etwas weniger zur Verfügung stehen.

Im BIOS habe ich einen Eintrag gefunden der "Processor Throttle" heisst. Damit kann man das System in 10%-Schritten auf bis zu 50% reduzieren. Wie läuft das denn dann?

Kann man nicht Rechenzeit beanspruchen ohne zu rechen? (Ich ahne schon, nur im Kernel-Mode?) Vielleicht hat ja jemand noch einen alternativen Vorschlag, wie man das ganze halbwegs allgemeingültig lösen kann (ohne dabei auf spezielle Hardware zu setzen, wie regelbare Kühler)


@Muetze1: Hast du vielleicht einen Lesetipp dazu für mich?

Olli 23. Mai 2006 11:50

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von Codewalker
Kann man nicht Rechenzeit beanspruchen ohne zu rechen? (Ich ahne schon, nur im Kernel-Mode?)

Und genau das macht der "Idle Process" schon.

Codewalker 23. Mai 2006 11:53

Re: Assembler im Kernel-Mode
 
ja klar, nur der nimmt halt nur die Idle-Time. Ich würde den dann gern mit höherer Priorität als "Idle" ausführen. Kann man dessen Priorität nicht ändern?

Olli 23. Mai 2006 11:56

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von Codewalker
Ich würde den dann gern mit höherer Priorität als "Idle" ausführen. Kann man dessen Priorität nicht ändern?

:shock: ... der "Idle Process" ist ein Pseudoprozeß, weswegen ich ihn in Anführungszeichen gesetzt habe. Deine Frage sollte damit beantwortet sein: nein.

Frickeldrecktuxer_TM 23. Mai 2006 12:09

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von Codewalker
Gibt's denn keine Beispiele zu den Stromsparmodi die CPUCool einsetzt. (Das System ist ein kleiner Server mit Xeon-Prozessor).

Ist schon ein bisschen länger her, daß ich mich mal ansatzweise dafür interessiert habe (ich suchte eine freie (speech) Alternative zu CPUCool), aber ich habe damals nicht auf Anhieb Codebeispiele gefunden. Das heißt aber nicht, daß es keine gibt, sondern nur, daß ich nicht sonderlich viel Energie reingesteckt habe, welche zu finden ;-)

Zitat:

Zitat von Codewalker
Ich will den Programmen ja nicht die Arbeitsgrundlage entziehen, sondern es soll nur etwas weniger zur Verfügung stehen.

Untertakten wäre eine Möglichkeit. Für Mobilprozessoren wird es da mit Sicherheit gute Beispiele geben, zum Beispiel aus der Linux-Welt. Für gewöhnliche Desktop-Prozessoren oder gar Xeons, die beispielsweise nicht mit gewöhnlichen Desktop-Chipsets arbeiten möchten.

Zitat:

Zitat von Codewalker
Vielleicht hat ja jemand noch einen alternativen Vorschlag, wie man das ganze halbwegs allgemeingültig lösen kann (ohne dabei auf spezielle Hardware zu setzen, wie regelbare Kühler)

Ich rate dir einfach, einen Kühler zu nehmen, der für deinen Prozessor ausgelegt ist. Das muss nichtmal ein regelbarer sein, sondern einfach nur einer, der deinen Prozessor auch bei voller Last noch hinreichend kühlen kann.
Wie warm wird den dein Prozessor? Vielleicht erfährt man dann etwas mehr über deine Motivation, den Prozessor kühler zu halten.

enricoffo 1. Jun 2006 07:11

Re: Assembler im Kernel-Mode
 
Also man könnte doch die Taktfrequenz ändern. Wenn bei 1,7GHz die CPU-Last bei z.B. 20% liegt, könnte man doch den Multiplikator verkleinern, dann wäre die CPU z.B auf 300Mhz getaktet und würde Strom sparen. Die Auslastung wäre dann evtl. 60%...

Die Frage ist nur, wie man mit Delphi den Multiplikator ändert. Ich habe dazu nix im WWW gefunden..

Olli 1. Jun 2006 11:19

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von enricoffo
Die Frage ist nur, wie man mit Delphi den Multiplikator ändert.

... und es wäre schlimm, wenn das einem Delphi- sprich Usermodeprogramm erlaubt sein würde ...

MagicAndre1981 1. Jun 2006 11:44

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von enricoffo
Die Frage ist nur, wie man mit Delphi den Multiplikator ändert. Ich habe dazu nix im WWW gefunden..

garnicht, dass geht nur im Kernelmode mit dem WRMSR-Befehl. Im Usermode gibts eine schöne Exception (priveligierte Operation :zwinker: ).

enricoffo 1. Jun 2006 12:09

Re: Assembler im Kernel-Mode
 
Also mit Asm geht das?
Naja, man kann doch mit der giveio.sys oder mit der uallCollecton direkt auf die Hardware zugreifen, oder?

thetrue 1. Jun 2006 12:32

Re: Assembler im Kernel-Mode
 
Zitat:

Zitat von Codewalker
Hallo zusammen.

Ich möchte gerne bei meinem Rechner die Leistung verringern indem ich ein HALT-Kommando an die CPU sende.

Delphi-Quellcode:
asm
  HLT ; thx to Frickel[...]TM
end;
In diesem Thread habe ich schon erfahren, dass dies wohl ein privilegiertes Kommando ist und nur aus Ring0 (= Kernel) gesendet werden kann und wurde dabei auf die uAllCollection verwiesen. Leider hat mir das nicht wirklich weitergeholfen. Kennt sich jemand mit der uAllCollection aus oder kann mir sagen, wie ich das realisieren kann? :gruebel:

der befehlt hlt von assembler hält die CPU an, die verarbeitet dann nichts weiter ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz