Begrenzung der CPU-Nutzung einheitlich

1804
devil0150

Ich habe ein Programm und möchte seine Laufzeit anhand der Eingabe messen, aber mein System ist alt und hat Überhitzungsprobleme. Wenn ein Programm für etwa 1 Minute mit voller CPU-Auslastung ausgeführt wird, wird es normalerweise in den Ruhezustand versetzt oder vor Überhitzung ausgeschaltet.

Ich suche nach etwas, um die CPU-Nutzung zu begrenzen. Ich habe mir cpulimit angesehen, aber es funktioniert, indem das Programm mehrmals angehalten und fortgesetzt wird. Wie würde das in diesem Fall funktionieren? Wäre es eine Schätzung, das Programm in einer langsameren CPU auszuführen, oder würde es die Timing-Ergebnisse verfälschen?

Gibt es eine andere Software, die die CPU-Nutzung einheitlicher einschränkt?

0
Versuchen Sie es mit [cgroups] (https://en.wikipedia.org/wiki/Cgroups). gronostaj vor 7 Jahren 0

1 Antwort auf die Frage

1
Xen2050

Hört sich an, als wollten Sie die Geschwindigkeit oder Frequenz Ihrer CPU einschränken. Der Linux-Kernel sollte dazu in der Lage sein. Wenn Ihre CPU dies unterstützt, können Sie es nur bis zu einem niedrigeren Maximum beschleunigen. Wenn Ihre CPU zum Beispiel normalerweise mit 1, 2 oder 3 GHz läuft, sagen Sie ihr, dass sie nur auf 1 oder 2 GHz gehen soll, und sie sollte viel kühler bleiben als bei 3 GHz.

Sie können die sysfs / procfs-Schnittstelle direkt verwenden, aber die Verwendung cpufreqist wahrscheinlich viel einfacher. Unter Debian / Ubuntu heißt das Paket cpufrequtils, hier ist eine Ubuntu- Paketsuche .

Beim Laufen cpufreq-infosollten Sie die verfügbaren CPU-Frequenzen und -Regler angeben und angeben, ob die CPU "mit der gleichen Hardware-Frequenz läuft" oder "ihre Frequenz von der Software koordiniert werden muss".

Um beispielsweise die maximale Frequenz von cpu0 auf 1,5 GHz einzustellen, würden Sie Folgendes ausführen:
cpufreq-set --cpu 0 --max 1.5GHz

Die verschiedenen Gouverneure und Einstellungen entscheiden, wann die CPU beschleunigt und verlangsamt wird. Wenn Sie sie "falsch" setzen, könnte die CPU so aussehen, als würde sie niemals beschleunigen oder nie verlangsamen, aber im Allgemeinen denke ich, dass der konservative Gouverneur dies ist Besser als der OnDemand-Governor (normalerweise ist er der Standard und scheint sich zu beschleunigen, wenn Sie in letzter Zeit sogar komisch auf Ihren Computer schauen ;-) Dieser Befehl weist beispielsweise den konservativen Governor an, langsamer zu werden, wenn die CPU nur zu 50% ausgelastet ist:
echo 50 | sudo tee /sys/devices/system/cpu/cpufreq/conservative/down_threshold


Und ich vermute natürlich, dass mit Ihrem Computer etwas nicht stimmt. Es sollte nicht so abschalten.

  • Blockieren Flusen den Lüfter und den Luftstrom? Lüftungsöffnungen blockiert?
  • Läuft der Lüfter mit voller Geschwindigkeit oder läuft er überhaupt?
  • Ist der Kühlkörper richtig befestigt oder beschädigt?

Wird die CPU tatsächlich von der Überhitzung heruntergefahren (Protokolle unterstützen dies) oder gibt das Netzteil auf / Überhitzung?

Hat dies nur Auswirkungen auf das Programm oder die gesamte CPU? Wenn ich mehrere Kerne habe, alle? devil0150 vor 7 Jahren 0
cpufreq begrenzt jeden CPU-Kern individuell. Möglicherweise haben Sie einen Kern bei voller Geschwindigkeit und die anderen langsamer (wenn Ihre CPU / Ihr Kernel dies unterstützt). Alles, was läuft, wäre "einheitlich" begrenzt, wenn alle Kerne das gleiche Limit haben. Ich bin nicht sicher, wie der Kernel den Prozess wählt, der auf welchem ​​Kern läuft, wenn er unterschiedliche Geschwindigkeiten hat Xen2050 vor 7 Jahren 0