Prozessor Auslastung steuern

Hallo Wissende,
mich beschäftigt da eher eine allgemeine Frage. Ich bin schon oft in meiner Laufbahn als User auf Programme gestoßen bei denen man die Prozosssorlast steuern konnte (also von 0 bis 100%),
nun hatte ich ne weile überlegt, habe aber keinen Ansatz wie man soetwas realisieren kann in einem Programm (unabhängig von der Sprache)

Wie funktioniert das? Wird da mit „sleep“ gearbeitet? Woher weiss das Programm wieviel berechnungen die CPU bei 100% ausführen kann? Läuft da vorher immer ein kleiner benchmark?

Bin für jede (auch gern mit Fachwörtern bespickte) Antwort dankbar.

Hallo Indyk,

sogar mit VBScript (in Verbindung mit WMI-Abfragen) kann man die Prozessorauslastung auslesen. Hier könntest Du in einer Schleife eine komplizierte Berechnung ausführen lassen, am besten eine, die mit unterschiedlichem Input unterschiedlich langwierig ist.

Schöne Grüße,

Mohamed.

Hallo Fragewurm,

Wie funktioniert das? Wird da mit „sleep“ gearbeitet? Woher
weiss das Programm wieviel berechnungen die CPU bei 100%
ausführen kann? Läuft da vorher immer ein kleiner benchmark?

Das ist im Allgemeinen die Aufagbe des Betriebssystems. Je nach dem stellt es entsprechende Funktionen zur Verfügung.

Fragt sich jetzt welches „sleep“ du meinst. Mit dem Maschinenbefehl SLEEP geht es nicht, aber manche Betriebssysteme stellen einen gleichnamigen Aufruf zur Verfügung.

Entgegen Mohameds Aussage gibt es aber auch einen Einfachen Trick, wenn das Betriebssystem keine brauchbaren Aufrufe zur Verfügung stellt:
Man Programmiert einen Timer, welcher z.B. alle 10ms dein Programm aufruft. Zudem benötigst du noch einen Zähler.
Beim ersten Aufruf durch den Timer rechnest du in deinem Programm, bis zum nächsten Aufruf durch dem Timer, bei welchem du die CPU aber direkt wieder an das Betriebssystem abgibst.

Wenn du jetzt bei einem Aufruf rechnest und bei 9 aufrufen die CPU gleich abgibst, ergeben sich etwa 10% Auslastung.
Bei 8x rechnen und und 2x abgeben hast du etwa 80%.

MfG Peter(TOO)