Ich möchte cgroups besser verstehen und die Anwendungsfälle für die Anwendung von cgroups verstehen.
Sind cgroups eine gute Möglichkeit, verschiedene Anwendungen zu priorisieren (dh bestimmten Anwendungstypen wie Webservern eine höhere Priorität einzuräumen)?
linux
scheduling
cgroups
priority
Johnnie
quelle
quelle
Antworten:
Es gibt verschiedene Verwendungszwecke für cgroups . Aus der Systemadministration heraus ist es wahrscheinlich am wichtigsten, die Ressourcen zu begrenzen - das klassische Beispiel hierfür ist der CPU-Zugriff. Wenn Sie eine Gruppe für z. B. erstellen
sshd
und ihr einen nicht zu vernachlässigenden CPU-Zeitanteil geben (im Vergleich zu anderen Gruppen oder der Standardeinstellung, unter die alle unsortierten Prozesse fallen), können Sie sich garantiert auch in Zeiten anmelden, in denen der Computer ausgeführt wird eine CPU-intensive Aufgaben.Interessanter ist, dass Sie sich fast sofort anmelden können, wenn Sie diesen "Remotezugriff" -Prozessen eine viel höhere CPU-Freigabe als dem Rest geben (da der ssh-Daemon Vorrang vor den übrigen laufenden Prozessen hat), ohne dass Sie Schaden nehmen die Gesamtberechnungsstärke der Maschine, da die Ressourcen nur nach Bedarf zugewiesen werden. Normalerweise möchten Sie dies zusammen mit der Priorisierung von E / A (einschließlich Netzwerk) tun. Wie John im Kommentar unten richtig hervorhebt, möchte man diese Dinge jedoch nicht unachtsam tun (da sie auf unerwartete Weise zurückschlagen könnten). Es ist wichtig zu beachten, dass die Gruppen standardmäßig vererbt werden - dh man möchte kein Speicher- / CPU-Schwein aus einer solchen SSH-Sitzung heraus starten. Dafür gibt es jedoch Mechanismen, die cgroups beim Start Prozesse zuweisen können.
Eine andere Verwendung besteht darin, die Prozesse voneinander zu isolieren. In Kombination mit anderen Funktionen (Namespace-Isolierung) in neueren Linux-Kerneln werden sie verwendet, um Virtualisierung auf Betriebssystemebene wie LXC (Linux Containers) zu erstellen .
Ansonsten können Sie verschiedene Abrechnungs- und Steuerungsaufgaben erledigen (Einfrieren einiger Prozessgruppen, Zuweisen zu bestimmten CPU-Kernen usw.).
Die beiden Links hier sollten ein vernünftiger Ausgangspunkt sein, wenn Sie nach weiteren Informationen suchen. Möglicherweise möchten Sie auch das
Documentation/cgroups
Verzeichnis im Linux-Kernel-Quellbaum überprüfen .quelle
systemd
, die (ab) cgroups für ihre eigenen Zwecke verwenden - die systemd-Einheitendateien für Dienste geben möglicherweise Hinweise darauf, was sinnvoll sein könnte. Aber am Ende ist es immer Sache des Systemadministrators, auf die harte Tour zu lernen, was wirklich nicht die "gute Idee (TM)" ist.cgroup
Pseudofilesystem, das Sie möglicherweise zuerst bereitstellen müssen. In den meisten Fällen erledigt das Init-System dies heute für Sie und verwendet cgroups häufig bereits auf irgendeine Weise. Die einzige endgültige Antwort ist das Lesen der Dokumentation: Kernel-Dokumente , OpenRC @ Gentoo , systemd @ freedesktop .