Autor |
Beitrag |
Killmag10
      
Beiträge: 297
Suse Linux / DOS / Windows All In One ;)
D4 / D2005
|
Verfasst: Di 26.04.05 19:10
Hi,
Wie kann ich ein cool bit an die CPU senden
Also das was bei windows die ganze zeit der leerlaufprozess macht.
muss ich bestimmt Assembler Code einbinden oder ?
und wie kann ich meinen programm ein CPU zuteilen wenn es mehrere sind ?
mfg. Killmag10
_________________ Mega- inkompetente Computer- ruinierende Organisation spioniert ohne funktionierende Technik
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 26.04.05 19:12
Was zum Teufel ist ein Cool Bit?
Und zum CPU zuteilen: Wird nicht gehen, das macht der Thread-Manager von Windows und der lässt sich IMHO nicht dazwischenreden. Ist auch nicht wirklich notwendig, der macht seine Sache meistens recht gut.
|
|
Killmag10 
      
Beiträge: 297
Suse Linux / DOS / Windows All In One ;)
D4 / D2005
|
Verfasst: Di 26.04.05 19:18
UGrohne hat folgendes geschrieben: | Was zum Teufel ist ein Cool Bit?
Und zum CPU zuteilen: Wird nicht gehen, das macht der Thread-Manager von Windows und der lässt sich IMHO nicht dazwischenreden. Ist auch nicht wirklich notwendig, der macht seine Sache meistens recht gut. |
ich mein damit den befehl an das CPU das es nicht arbeiten soll. (wie bei CPU eat "n" cool)
und bei manschen programmen kann man das cpu auch einstellen oder sie nehmen nur das erste also muss das doch ihrgentwie gehn oder ?
_________________ Mega- inkompetente Computer- ruinierende Organisation spioniert ohne funktionierende Technik
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 26.04.05 19:29
Killmag10 hat folgendes geschrieben: | ich mein damit den befehl an das CPU das es nicht arbeiten soll. (wie bei CPU eat "n" cool) |
Hmmm, komisch, wenn ich an die CPU einen Befehl schicke, dass sie nicht arbeiten soll, dann muss sie das doch auch verarbeiten. Und wenn sie sich danach schlafen legt, wie zum Teufel soll ich dann weiterarbeiten? Hast Du da ne Quelle für die Info, das interessiert mich jetzt.
Killmag10 hat folgendes geschrieben: | und bei manschen programmen kann man das cpu auch einstellen oder sie nehmen nur das erste also muss das doch ihrgentwie gehn oder ? |
Nenn mir mal eins, ich hab bisher keines gesehen. Aber vielleicht geht es ja doch irgendwie 
|
|
Killmag10 
      
Beiträge: 297
Suse Linux / DOS / Windows All In One ;)
D4 / D2005
|
Verfasst: Di 26.04.05 19:42
hier ist die webseite des programms was sowas machen kann:
www.kiki-koko.com/pu...e_2=content-home.dat
kuck dir wenn du das programm gedownloadet hast die Manual.html an da steht auch nochmal in bittel was zu drin.
ich will praktisch mit meinen programm auch das cpu ausbremmsen, weil bei den prog von oben fehlen mir in paar funktionen und mein cpu von mein notebook is fast in bittel zu schnell (3,06 GHz mit HT)
und falls du dich jetzt fragst für was das cpu ausbremmsen
hatt volgenden hintergrund es gibt programm die verschleutern sinlos rechenleistung obwoh sie sie garnicht benötigen somit kann man dann für die zeit wo das prog leuft seine wohnung mit dem notebook heitzen mit gratis turbienen geräusch ^^
_________________ Mega- inkompetente Computer- ruinierende Organisation spioniert ohne funktionierende Technik
|
|
Muetze1
      
Beiträge: 346
|
Verfasst: Di 26.04.05 19:44
Moin!
Diese Programme führen den HLT (halt) Befehl aus und die CPU wird durch ein externen Interrupt wieder geweckt bzw über den SMM (System Management Mode) verwaltet. Das solltest du aber nicht machen und vor allem fehlen dir als Application die Rechte dazu. Du müsstest im Kernel Ring 0 laufen, und daher kannst du dies vergessen.
Und der "Thread Manager" von Windows lässt sich mit WinAPI Funktionen ein wenig dazwischen reden, weil man ihm sagen kann, bestimmte Prozesse nur auf einer bestimmten CPU auszuführen.
MfG
Muetze1
|
|
Killmag10 
      
Beiträge: 297
Suse Linux / DOS / Windows All In One ;)
D4 / D2005
|
Verfasst: Di 26.04.05 19:49
Muetze1 hat folgendes geschrieben: | Moin!
Diese Programme führen den HLT (halt) Befehl aus und die CPU wird durch ein externen Interrupt wieder geweckt bzw über den SMM (System Management Mode) verwaltet. Das solltest du aber nicht machen und vor allem fehlen dir als Application die Rechte dazu. Du müsstest im Kernel Ring 0 laufen, und daher kannst du dies vergessen.
|
und wieso hatt das prog dann die rechte ?
und warum sollte man das nicht machen ?
_________________ Mega- inkompetente Computer- ruinierende Organisation spioniert ohne funktionierende Technik
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 26.04.05 19:50
Hab hier nen Link gefunden: free.pages.at/coolingsoftware
Vielleicht gibt Dir das dazu mehr Infos, das Stichwort scheint hier wohl ACPI zu sein.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 26.04.05 21:42
Das Zuweisen der CPUs ist möglich und wird über die CPU Mask im Prozess-Entry gemacht. Befehl ausm MSPSDK müsste ich raussuchen ... Dafür müsste es bei Den Schweizern aber glaube einen Tipp geben, mit dem das geht.
Wenn ich das aber so auf die Schnelle richtig sehe, geht das so hier:
www.swissdelphicente...showcode.php?id=2179
HTH.
BTW@CoolBit: Führ einfach die API-Funktion Sleep(1) aus, dann gibst Du überschüssige Rechenzeit an die CPU zurück. Entstehen dann Freiräume für den Leerlaufprozess, sollte Windows eigentlich manuell umschalten ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Muetze1
      
Beiträge: 346
|
Verfasst: Mi 27.04.05 01:32
Moin!
Wobei bei Sleep() zu beachten ist, dass erst ab Windows 2000 SP1 das "kühlen" der CPU mit dem Halt Befehl im Leerlaufprozess erst funktioniert. Bei Windows 2000 ohne SP gibs einen Bug, der dies verhindert. Die Betriebssysteme darunter bieten keine solche Funktionalität und halten die CPU überhaupt nicht an.
Und dein Programm wird entweder die Schnittstellen wie z.B. WMI unter Windows oder ACPI über das Interface von Windows machen - oder es installiert einen Kernel Mode Treiber.
Und zu dem Setzen der CPU Zuordnungen für die Prozesse: SetProcessAffinityMask(),
SetThreadAffinityMask(),
SetThreadIdealProcessor(), GetProcessAffinityMask()
MfG
Muetze1
|
|