Zwei Prozesse führen umfangreiche Berechnungen durch – ich möchte, dass einer davon etwa 100 % der Prozessorzeit nutzt – wie?

Zwei Prozesse führen umfangreiche Berechnungen durch – ich möchte, dass einer davon etwa 100 % der Prozessorzeit nutzt – wie?

Ich betreibe einen Ubuntu-Basisserver mit zwei Prozessen: - Prozess 1 – führt Berechnungen während 100 % der Betriebszeit durch und verwende diesen, um Rechenleistung mit der Community zu teilen (er läuft mit @prio 19) - Prozess 2 – führt von Zeit zu Zeit 5–10 Minuten lang Berechnungen durch und verwende diesen, um Berechnungen für mich durchzuführen (er läuft mit @prio -19)

Ich möchte, dass Prozess 2 100 % der Rechenleistung erhält (Prozess 1 sollte in diesem Moment nahe 0 % der CPU-Leistung kommen).

Ich habe versucht, nice/renice zu verwenden und Prozess 1 erhält Prio 19 (niedrigste mögliche) und Prozess 2 Prio -19 (höchste mögliche). Aber das Beste, was ich bekomme, sind 50 % der CPU für Prozess 1 und 50 % der CPU für Prozess 2 (geprüft mit htop) – was mich irgendwie überrascht hat …

Beide Prozesse sind Multithread-Prozesse und verbrauchen - wenn sie einzeln ausgeführt werden - 100 % aller CPU-Kerne. Keine anderen Ressourcen (E/A, Speicher, Bandbreite usw.) können diese Nutzung beeinflussen.

Ich möchte keinen Prozess manuell stoppen/starten, wenn ich Rechenleistung benötige (beide Prozesse müssen ständig laufen); 100 % der CPU für Prozess 2 müssen automatisch bereitgestellt werden.

Was muss ich tun, um mein Ziel zu erreichen? Danke.

Antwort1

Dank @ubfan1 habe ich verschiedene Planungsstrategien ausprobiert und hier ist das beste Ergebnis, das ich bisher erzielt habe:

  • Prozess 1 wird mit der SCHED_BATCH-Richtlinie ausgeführt

  • Prozess 2 läuft mit SCHED_RR-Richtlinie

Ergebnisse: wenn beide Prozesse gleichzeitig laufen: - Prozess 1 wird mit ca. 5% der CPU-Auslastung angegeben - Prozess 2 wird mit ca. 95% der CPU-Auslastung angegeben

und wenn nur Prozess 1 Berechnungen durchführt (Prozess 2 wartet auf meine Eingabe, um Berechnungen zu starten) - Prozess 1 nutzt 100 % der CPU

Falls jemand mehr darüber erfahren möchte, kann er dies lesen:

  1. http://manpages.ubuntu.com/manpages/xenial/man8/schedtool.8.html
  2. http://man7.org/linux/man-pages/man7/sched.7.html

verwandte Informationen