Linux folgt (noch) nicht dem POSIX.1-Standard, der besagt, dass ein reniceOn-Prozess "alle System-Scope-Threads im Prozess" betrifft, da laut pthreads (7) doc "Threads keinen gemeinsamen Nice-Wert haben".
Manchmal kann es jedoch praktisch sein, renice"alles" zu tun, was sich auf einen bestimmten Prozess bezieht (ein Beispiel wären untergeordnete Apache-Prozesse und alle ihre Threads). So,
- Wie kann ich
renicealle Threads, die zu einem bestimmten Prozess gehören? - Wie kann ich
renicealle untergeordneten Prozesse, die zu einem bestimmten Prozess gehören, ausführen?
Ich suche eine ziemlich einfache Lösung.
Ich weiß, dass Prozessgruppen manchmal hilfreich sein können, aber sie stimmen nicht immer mit meinen Vorstellungen überein: Sie können eine breitere oder andere Gruppe von Prozessen umfassen.
Die Verwendung einer von cgroupverwalteten systemdSoftware kann ebenfalls hilfreich sein, aber selbst wenn ich daran interessiert bin, etwas darüber zu erfahren, suche ich meistens nach einer "Standard" -Lösung.
BEARBEITEN: man (7) pthreadssagt auch, dass "alle Threads in einem Prozess in derselben Thread-Gruppe platziert werden; alle Mitglieder einer Thread-Gruppe haben dieselbe PID". Ist es also überhaupt möglich, reniceetwas zu tun, das keine eigene PID hat?
man (7) pthreadssagt über die aktuelle (NPTL-) Implementierung: "Alle Threads in einem Prozess werden in dieselbe Thread-Gruppe gestellt; alle Mitglieder einer Thread-Gruppe haben dieselbe PID" und "Threads haben keinen gemeinsamen Wert". Wie können Sie dann einen Thread, der keine eigene PID hat, umbenennen, wenn Sie dazureniceeine PID verwenden?