![Die Nutzung der CPU-Leerlaufzeit verlangsamt weiterhin andere Programme](https://rvso.com/image/1289063/Die%20Nutzung%20der%20CPU-Leerlaufzeit%20verlangsamt%20weiterhin%20andere%20Programme.png)
Früher, als ich einen Folding@Home-Client verwendet habe, und jetzt, wenn ich BOINC verwende, haben sie immer „untätige“ CPU-Zeit verbraucht (für diejenigen unter Ihnen, die mit diesen Programmen nicht vertraut sind: Sie führen auf Ihrem Computer umfangreiche wissenschaftliche Berechnungen aus, also sehr aufwändig). Mir ist jedoch aufgefallen, dass sowohl unter Windows als auch unter Linux, wenn ich andere Dinge versuche (Firefox, Programmierung in Netbeans usw.), all diese Programme extrem langsam sind.
Ich weiß, dass man die Clients beispielsweise nur auf 2 oder 3 Kernen laufen lassen kann (bei einem 4-Kern-System), aber mich interessiert mehr, warum diese „Leerlaufzeit“ der CPU dazu führt, dass Programme mit normaler Priorität langsamer werden. Würde ein Prozess mit normaler Priorität nicht vor dem Prozess mit Leerlaufpriorität ausgeführt und bei Bedarf unterbrochen? Warum ist es für Betriebssysteme schwierig, dies zu verwalten?
Antwort1
Diese Programme laufen nicht wirklich während der „Leerlaufzeit“ der CPU, sondern als Prozesse mit niedriger Priorität. Wenn ein Betriebssystem mehrere Anwendungen ausführt, verwendet es einen Prozessplaner, um zu bestimmen, welche Prozesse wie oft auf die CPU zugreifen dürfen. Dies wird als präemptives Multitasking bezeichnet.
Der Scheduler verwendet Prozessprioritäten, um zu bestimmen, welche Prozesse Zugriff auf die CPU erhalten. Ein Prozess mit normaler Priorität hat im Scheduler Vorrang vor einem Prozess mit Leerlaufpriorität, aber die CPU wird weiterhin verwendet und es entsteht ein gewisser Overhead durch Kontextwechsel zwischen Threads und Prozessen.
Da die CPU nun ständig mit 100 % ausgelastet ist und keine Leerlaufzyklen mehr zur Verfügung stehen, kann man sich gut vorstellen, dass einige Prozesse und Unterbrechungen aufgrund des Thread-Switching-Overheads länger dauern können, als wenn die CPU im Leerlauf wäre.
Einige dieser Programme haben die Option, ihre Prozesse zu stoppen, wenn der Computer verwendet wird. Sie tun dies, indem sie Maus- oder Tastaturaktivität erkennen und sich für einen bestimmten Zeitraum deaktivieren, bis festgestellt wird, dass der Computer wieder im Leerlauf ist. An diesem Punkt werden sie wieder gestartet. Ich würde vorschlagen, sich diese Option anzusehen.
Ein weiterer Punkt ist, dass eine CPU im Leerlauf deutlich weniger Strom verbraucht als bei voller Auslastung. Wenn Ihre Programme also „freie“ CPU-Zyklen verwenden, können sie den Stromverbrauch Ihres PCs leicht verdoppeln und Sie mehrere Dollar pro Monat an Stromkosten verursachen.
Antwort2
Ich muss nur noch ein paar Kleinigkeiten zu Chris Thompsons Antwort hinzufügen, den Hauptteil hat er bereits gesagt.
Der Stromverbrauch und die Auswirkungen auf Ihre Stromrechnung können wirklich erheblich sein, um dies noch einmal zu betonen. Gründe, warum andere Programme von den zusätzlichen Threads mit niedriger Priorität betroffen sein können, könnten zusätzlicher Arbeitsaufwand beim Ändern von Prozessen sein (Cache und Register werden jetzt tatsächlich verwendet). Und E/A-Operationen könnten auch wirklich einen gewissen Einfluss haben. Die meiste Arbeit dieser Programme ist nur CPU-intensiv und das kann durch die Prozesspriorität beeinflusst werden, aber die zusätzlichen E/A sind schwer zu priorisieren. Und zusätzlicher Speicherverbrauch verlangsamt Ihr System auch. Wenn Ihr Speicher ziemlich voll ist, kann Swapping die Leistung Ihres Systems erheblich verringern.
Um etwas genauer auf den Stromverbrauch einzugehen: Ich habe tatsächliche Stromverbrauchswerte für einen Intel Core i7 Extreme Edition von rund 300 Watt und mehr unter hoher Belastung gefunden. Die neueren Intel Core-Prozessoren haben einige wirklich nette Energiesparfunktionen, die es der CPU sogar ermöglichen, den Strom für bestimmte Kerne zu drosseln, wenn diese im Leerlauf sind. Ich schätze also, dass Sie 150 bis 200 Watt mehr verbrauchen könnten, wenn Sie solche Programme ständig laufen lassen. (Ältere Zahlen, die ich gefunden habe, zeigen einen Unterschied von über 150 Watt.) Da ich jedoch keine zuverlässigen Zahlen gefunden habe, nehmen wir an, dass Sie 100 Watt mehr verbrauchen (vergessen Sie nicht, dass Ihr Kühlsystem auch mehr arbeiten muss, wenn Ihre CPU mehr Wärme erzeugt) – das ergibt 100*24*30 = 72 kWh/Monat oder 864 kWh/Jahr, wenn Ihr PC rund um die Uhr laufen würde.