Alternative Möglichkeiten zur Begrenzung der CPU-Auslastung:1. Verwenden Sie den Taskset-Befehl.2. Verwenden Sie Kontrollgruppen.3. Verwenden Sie Docker und begrenzen Sie die CPU-Auslastung mithilfe von cpuset.4. Reduzieren Sie die Anzahl der Threads in der Anwendung. Bei diesem Ansatz sind einige Berechnungen erforderlich.
Eine andere Sache, die Sie versuchen könnten, ist cpulimit
auszuführen als Dämon. Ich habe das nicht getestet; es ist nur eine idee.
Es befindet sich in den Ubuntu-Repos:
sudo apt install cpulimit
Verwenden Sie systemd, wenn Sie möchten. Dies sollte alle beschränken Instanzen von dd auf 20 % CPU.
[Unit]
Description=dd CPU Limiter
[Service]
ExecStart=/usr/bin/cpulimit -e dd -l 20
[Install]
WantedBy=multi-user.target
Quelle
Ich bin versehentlich auf eine andere gültige Antwort gestoßen, die auf https://unix.stackexchange.com/questions/213903/linux-cgroups-limit-cpu-usage-in-absolute-values-which-do-not-depend-on-cpu gegeben wurde -spe
Wenn Sie eine feste Begrenzung der CPU-Bandbreite wünschen, können Sie cpu.cfs_quota_us und cpu.cfs_period_us verwenden. Aus der CFS-Dokumentation des Kernels:
Die für eine Gruppe zulässige Bandbreite wird über ein Kontingent und einen Zeitraum angegeben. Innerhalb jeder gegebenen "Periode" (Mikrosekunden) darf eine Gruppe nur bis zu "Quote" Mikrosekunden CPU-Zeit verbrauchen. Wenn der CPU-Bandbreitenverbrauch einer Gruppe dieses Limit (für diesen Zeitraum) überschreitet, werden die Aufgaben, die zu ihrer Hierarchie gehören, gedrosselt und dürfen bis zum nächsten Zeitraum nicht erneut ausgeführt werden.