Um den reibungslosen Ablauf auf den Compute-Nodes sicher zu stellen, sollen cgroups verwendet werden. Die Nutzer sollen in Mitarbeiter & Studierende gruppiert werden, wobei jeder einzelne Nutzer eine eigene Untergruppe erhält. Der Mitarbeiter X soll also in die cgroup „staff/X„. Die einzelnen Nutzer können dann im Ressourcenverbrauch limitiert werden.
Obwohl systemd allerhand mitbringt, soll zunächst das Paket cgroups-tools zum Einsatz unter OpenSuse Leap 15 kommen:
Nach der Installation mit „rpm -i …“ stehen die Tools cgcreate, cgdelete etc zur Verfügung. Damit die Nutzer direkt nach dem Einloggen in die entsprechende Gruppe gepackt werden, wird pam_exec verwendet. Folgende Zeile wird in die Datei /etc/pam.d/common-session-pc hinzugefügt:
session optional pam_exec.so /PATH_TO/cgroups_pamlogin.sh
Der Pfad muss entsprechend angepasst werden. Das Skript cgroups_pamlogin.sh erzeugt nun beim Starten einer neuen Session (PAM_TYPE=open_session) die entsprechende Gruppe, wenn diese noch nicht vorhanden ist. Danach werden die entsprechenden Limits gesetzt ( 90% des Speichers und der CPU; 95% für die gesamte Gruppe). Zuletzt wird der PAM-Login-Prozess in die Gruppe verschoben, sodass alle folgenden Kind-Prozesse auch in dieser Gruppe sind:
- echo $$ >> /sys/fs/cgroup/memory/tasks
- echo $$ >> /sys/fs/cgroup/cpu/tasks
Die gesamte Konfiguration als tar.gz: pam_cgroups.tar.gz