2010-05-05 3 views
7

Ich suche nach einer Möglichkeit, die CPU-Auslastung von jeder Anwendung auf Windows 7 auf 50% zu begrenzen. Ich habe versucht, im Internet nach einer Möglichkeit zu suchen, dies zu tun, und es sieht so aus, als ob dies unter Linux und Mac OS X einfach ist (ein Befehl im Terminal), aber ich weiß nicht, wie ich es unter Windows machen soll 7. Jede Hilfe würde sehr geschätzt werden. Vielen Dank!Programmgesteuerte Begrenzung der CPU-Auslastung durch jede Anwendung unter Windows 7?

Rohan

+0

Was über Multi-Core-Prozessoren? Eine CPU-Auslastung von 50% würde den Prozess beschränken, um nicht mehr als die Hälfte der Kerne zu verwenden. –

Antwort

3

Sie können die CPU-Auslastung eines Prozesses auf Windows 7 oder früher als diese Ressource beschränken wird durch das OS * verwaltet.

Sie können jedoch festlegen, dass ein Prozess mit einer bestimmten Priorität ausgeführt wird, z. unter normale Priorität zu laufen. Die verschiedenen Planungsprioritäten können mit der API-Funktion SetPriorityClass eingestellt werden.

Scheduling Priorities

Was Sie wahrscheinlich zu verhindern versuchen, ist, dass Ihr Prozess die Leistung des Systems in einer Art und Weise beeinflusst, dass der Benutzer bemerken würde. In diesem Fall ist die Festlegung geeigneter Prioritäten eine Lösung. Immerhin hast du eine expensive CPU so why not use it whenever you can?

* Eine mögliche Lösung für Windows 8 und höher finden Sie unter @Ben Voigt's answer.

+0

TL; DR-Version dieser Antwort: "0xA3 kennt keinen Weg". Beachten Sie, dass dies nicht dasselbe ist, da es * nicht * ein Weg ist. –

+1

@Ben Voigt: Warum so arrogant? Hatte einen schlechten Tag? JOBOBJECT_CPU_RATE_CONTROL_INFORMATION ist neu in * Windows 8 * (und Windows Server 2012) und die Frage bezieht sich auf Windows 7. Leider habe ich nicht die Zeit regelmäßig zu überprüfen, ob eine meiner alten Postings ein Update benötigt, weil es eine neuere Version von Produkt xyz. –

+0

Vielen Dank für den Hinweis, dass bestimmte Struktur in Windows 8 neu ist. Ich habe den falschen gefunden. Die Fähigkeit existiert schon lange, Ihre Antwort ist immer noch (völlig) falsch. –

6

Sie können BES verwenden. Es drosselt CPU-hungrige Anwendungen, wenn Sie gefragt werden. Sie können maximal 3 Programme begrenzen. Ich benutze dies, um mehrere Online-Spiel-Clients zu betreiben, und es funktioniert wie ein Zauber für mich. Sie sollten es mit Admin-Privilegien und in Windows XP SP3 kompatiblen Modus ausführen. Um diese Einstellungen anzupassen, klicken Sie mit der rechten Maustaste auf die ausführbare Datei und wählen Sie Optionen.

Here's the link for BES - CPU limiter.

1

Sie können ein ausgezeichnetes Programm namens "process lasso" verwenden.

In Lasso können Sie beispielsweise ein bestimmtes Programm auf 1 CPU und niedrige Priorität beschränken. Jede Kopie dieses Programms wird mit diesen Einstellungen ausgeführt. Ich habe dieses Programm verwendet, um CPU auf Terminalserver zu verwalten, und es hat sehr gut gearbeitet!

+1

Ich nehme an, Sie wurden aufgrund von unlesbaren Formulierungen abgelehnt, und nicht wegen der Informationsqualität . Ich hoffe, meine Bearbeitung wird helfen. ;-) Und willkommen in SO! – Arsen7

4

Wenn Sie sich auf einem Mehrkernprozessor befinden, können Sie mit der rechten Maustaste auf den Prozess im Aufgabenmanager klicken und die Affinität festlegen. Dadurch wird definiert, welche Kerne den Prozess ausführen dürfen. Deaktivieren Sie die Hälfte der Kerne und der Prozess wird 50% verwenden.

Oder sehen, um es zu tun programagically: Set affinity with start /AFFINITY command on Windows 7

3

Sie können die CPU-Auslastung des Prozesses oder einem anderen Verfahren begrenzen, indem das Verfahren von Interesse für einen Job-Objekt hinzufügen und Grenzen für die Job-Objekt platzieren.

Einer der Ressourcengrenzen, die für Job-Objekte konfiguriert werden können, ist die CPU-Auslastung:

Wenn Sie JOBOBJECT_BASIC_LIMIT_INFORMATION verwenden, achten Sie auf die Anmerkung:

für die Benachrichtigung zu registrieren, wenn diese Grenze ohne Beenden von Prozessen überschritten wird, verwenden Sie die SetInformationJobObject Funktion mit der JobObjectNotificationLimitInformation Informationsklasse

Und dann verwenden JOBOBJECT_END_OF_JOB_TIME_INFORMATION statt, denn das ist die vorschulische Windows 8

Verwandte Themen