CPU Auslastung für ein Prozess nicht über z.B. 80% lassen -- wie progammieren ?

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hallo,

ich habe mir überlegt, ein Programm zu machen, dass z.B. die CPU-Auslastung von einen Prozess, der viel benötigt (Spiel, ...) einfach zu "reduzieren".

D.h. Das Programm soll dann einfach von den Prozess (Spiel), dass 100% CPU-Auslastung braucht, nur z.B. 80% zulassen (durchlassen). D.h. Das 80% der gesamten CPU-Rechenleistung zu dem Spiel geschickt wird.

Die restlichen 20%, sollen dann z.B. auf die Hintergrundprozesse, oder auch auf ein weiteres Progamm, wie z.B. eine Datensicherung, verteilt werden.

Zusammenfassend: Das Spiel bekommt z.B. 80% von der Rechenleistung der CPU, die Datensicherung dann die restlichen 20%.

Wichtig: Es muss natürlich so gehen, dass, wenn das Spiel 100% bräuchte, mein Programm aber nur 80% diesem Spiel zuteilt (gibt).

----

Ich wäre auch in Codes interessiert, die statt der CPU-Rechenleistung, dass mit den Arbeitsspeicher machen.

D.h. Wenn man 1024 MB Ram hat, das Spiel benötigt auch 1024 MB, dass dann mein Programm, wie auch schon mit der CPU-Rechenleistung, nur diesem Programm z.B. 512 MB gibt, obwohl es aber mehr bräuchte. Das dann die restlichen 512 MB frei bleiben, (für Hintergrundprozesse, wie z.b. Datensicherung).

---
Oder das ganze Umgekehrt zu machen. (= Spiel bräuchte 100% von CPU-Rechenleistung, aber es bekommt nur 80%).
Dass dann mein Programm dem Benutzer eine Meldung davon gibt.
Natürlich geht es wieder mit CPU-Auslastung oder auch Speicherauslastung.
---

Ich glaube, dass mit der CPU-Rechenleistung mit der Prozesspriorität zu machen, ist nicht ganz das gleiche.

Ich weiß, dass dann das Spiel viel langsamer läuft, aber vielleicht hat jemand trotzdem so nen Code, Links, ... dazu.

P.S. Nehme natürlich auch Codes, Links, ... von Programmiersprachen wie C, C++, ... an.
 
Zuletzt bearbeitet:
Ich glaube nicht, dass die Windows-API direkten Zugriff auf den Scheduler des Betriebssystemkerns zulässt. Denn darauf läuft es wohl hinaus. Der einzige Weg, der mir bei Windows einfallen würde, wäre die Priorität der Prozesse und Threads anzupassen, womit aber nie garantiert wäre, wieviel Prozent ein Prozess tatsächlich einnehmen würde.

Ich denke, das fällt eher in den Fähigkeits-Bereich von Echtzeitbetriebssystemen. Und da Windows afaik nicht entsprechend konzipiert ist, sehe ich dahingehend eher schwarz.

Bei Linux sähe das anders aus: da gibt es spezielle Realtime-Distributionen mit modifiziertem Kernel wie z.B. Xenomai.

Frohes Fest,
XunnD
 
Ja, denk ich auch.

Solange der Prozess noch Arbeit für den Prozessor hat, wird Windows wohl auch versuchen, diese so schnell wie möglich zu verrichten, bis die Queue leer ist.

Wär ja auch nicht besonders sinnvoll 4 Takte lang die Queue abzuarbeiten und dann einen einfach zu ruhen, wenn noch Berechnungen anstehen.

Du wirst höchstens die Priorität anpassen können, aber solange Befehle auszuführen sind, wird auch gerechnet werden (was so ja auch durchaus sinnvoll ist), nur wenn dann eben mehrere Prozesse Ressourcen benötigen, werden niedrig-priorisierte Prozesse eben benachteiligt. Und dass müsste dann auch der richtige Weg für dich sein.

Anstatt Takte auszulassen, den vllt. irgendwann einmal ein anderer Prozess brauchen könnte, macht es ja viel mehr Sinn, diesen so lange zu nutzen, während der Takt von keinem anderen Prozess benötigt wird und erst wenn ein anderer diesen benötigt dann quasi nachzugeben oder anhand von Prioritäten eben die Ressourcen gleichmäßig oder ungleichmäßig zu verteilen.

Bei Multicore-Systemen ist das ohnehin schon wieder ganz anders...

Übrigens - ein solches Programm gibt es bereits, aber funktioniert leider nicht wirklich zuverlässig:
Process Tamer
 
Danke erstmal für die Antworten. :)

Übrigens - ein solches Programm gibt es bereits, aber funktioniert leider nicht wirklich zuverlässig:
Process Tamer

gibt es noch weitere solche Programme ? (Freeware, Shareware, ...) ?

Oder nur Process Tamer als einziges.
 
Keine Ahnung, wird schon noch zumindest etwas ähnliches geben, aber das ist das einzige mir bekannte.
 
Wenn man so was programmieren würde, meinst du, das würde sich als Shareware (~5 €) verkaufen lassen ?
 
Zuletzt bearbeitet:
Wenn es gut und zuverlässig funktioniert, also nicht wie Process Tamer, wieso auch nicht? Alles kann man verkaufen, wenn es einen Markt dafür gibt. Wenn das Produkt gut ist und in einem angemessenen Preis/Leistungs-Verhältnis steht... ;)
 
Hmm...

vielleicht machs ich.

Aber welche zusätzlichen Optionen (Einstellungen) außer die, die Process Tamer schon hat, könnte man noch einbauen ?
 
Warum ein Programm machen? Das gibt es schon.
Mit diesem Programm werden deine Vorstellungen umgesetzt.
 
Naja, ich kapier da überhaut nix.

Wo kann man denn da was einstellen ?

Ist das das gleiche wie Process Tamer ?
 
Zuletzt bearbeitet:
Zurück
Oben