GNU/Linux >> Tutoriels Linux >  >> Linux

Gestion des ressources avec les cgroups dans systemd

Il n'y a rien de plus frustrant pour moi en tant qu'administrateur système que de manquer de ressources informatiques de manière inattendue. À plus d'une occasion, j'ai rempli tout l'espace disque disponible dans une partition, j'ai manqué de RAM et je n'ai pas eu assez de temps CPU pour effectuer mes tâches dans un délai raisonnable. La gestion des ressources est l'une des tâches les plus importantes des administrateurs système.

Le but de la gestion des ressources est de s'assurer que tous les processus ont un accès relativement égal aux ressources système dont ils ont besoin. La gestion des ressources implique également de s'assurer que la RAM, l'espace du disque dur et la capacité du processeur sont ajoutés si nécessaire ou rationnés lorsque cela n'est pas possible. En outre, les utilisateurs qui monopolisent les ressources système, que ce soit intentionnellement ou accidentellement, doivent être empêchés de le faire.

Il existe des outils qui permettent aux administrateurs système de surveiller et de gérer diverses ressources système. Par exemple, les meilleurs outils et similaires vous permettent de surveiller l'utilisation de la mémoire, des E/S, du stockage (disque, SSD, etc.), du réseau, de l'espace d'échange, de l'utilisation du processeur, etc. Ces outils, en particulier ceux qui sont centrés sur le processeur, sont principalement basés sur le paradigme selon lequel le processus en cours d'exécution est l'unité de contrôle. Au mieux, ils fournissent un moyen d'ajuster le nombre agréable - et à travers cela, la priorité - ou de tuer un processus en cours d'exécution. (Pour plus d'informations sur les bons chiffres, consultez Surveiller les hôtes Linux et Windows avec Glances .)

En savoir plus sur les administrateurs système

  • Activer le blog Sysadmin
  • L'entreprise automatisée :un guide pour gérer l'informatique avec l'automatisation
  • Livre électronique :Automatisation Ansible pour les administrateurs système
  • Témoignages du terrain :guide de l'administrateur système sur l'automatisation informatique
  • eBook :Un guide de Kubernetes pour les SRE et les administrateurs système
  • Derniers articles sur l'administrateur système

D'autres outils basés sur la gestion traditionnelle des ressources dans un environnement SystemV sont gérés par le /etc/security/limits.conf et les fichiers de configuration locaux situés dans le fichier /etc/security/limits.d annuaire. Les ressources peuvent être limitées de manière assez grossière mais utile par utilisateur ou groupe. Les ressources pouvant être gérées incluent divers aspects de la RAM, le temps CPU total par jour, la quantité totale de données, la priorité, le nombre agréable, le nombre de connexions simultanées, le nombre de processus, la taille de fichier maximale, etc.

Utilisation des cgroups pour la gestion des processus

Une différence majeure entre systemd et SystemV est la façon dont ils gèrent les processus. SystemV traite chaque processus comme une entité en soi. systemd rassemble les processus associés dans des groupes de contrôle, appelés cgroups (abréviation de groupes de contrôle), et gère les ressources système pour le cgroup dans son ensemble. Cela signifie que les ressources peuvent être gérées par application plutôt que par les processus individuels qui composent une application.

Les unités de contrôle des cgroups sont appelées unités de tranche. Les tranches sont une conceptualisation qui permet à systemd d'ordonner les processus dans un format arborescent pour faciliter la gestion.

Affichage des cgroups

Je vais commencer par quelques commandes qui vous permettent d'afficher différents types d'informations sur les cgroups. Le statut systemctl status <service> La commande affiche des informations de tranche sur un service spécifié, y compris sa tranche. Cet exemple montre le at démon :

[root@testvm1 ~]# systemctl status atd.service
● atd.service - Deferred execution scheduler
     Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-09-23 12:18:24 EDT; 1 day 3h ago
       Docs: man:atd(8)
   Main PID: 1010 (atd)
      Tasks: 1 (limit: 14760)
     Memory: 440.0K
        CPU: 5ms
     CGroup: /system.slice/atd.service
             └─1010 /usr/sbin/atd -f

Sep 23 12:18:24 testvm1.both.org systemd[1]: Started Deferred execution scheduler.
[root@testvm1 ~]#

C'est un excellent exemple d'une raison pour laquelle je trouve systemd plus utilisable que SystemV et l'ancien programme init. Il y a tellement plus d'informations ici que SystemV ne pourrait fournir. L'entrée cgroup inclut la structure hiérarchique où le system.slice est systemd (PID 1), et le atd.service est un niveau en dessous et fait partie du system.slice . La deuxième ligne de l'entrée cgroup affiche également l'ID de processus (PID) et la commande utilisée pour démarrer le démon.

Le systemctl La commande affiche plusieurs entrées de groupe de contrôle. Le --all affiche toutes les tranches, y compris celles qui ne sont pas actuellement actives :

[root@testvm1 ~]# systemctl -t slice --all
  UNIT                             LOAD   ACTIVE   SUB    DESCRIPTION                    
  -.slice                          loaded active   active Root Slice                      
  system-getty.slice               loaded active   active system-getty.slice              
  system-lvm2\x2dpvscan.slice      loaded active   active system-lvm2\x2dpvscan.slice    
  system-modprobe.slice            loaded active   active system-modprobe.slice          
  system-sshd\x2dkeygen.slice      loaded active   active system-sshd\x2dkeygen.slice    
  system-systemd\x2dcoredump.slice loaded inactive dead   system-systemd\x2dcoredump.slice
  system-systemd\x2dfsck.slice     loaded active   active system-systemd\x2dfsck.slice    
  system.slice                     loaded active   active System Slice                    
  user-0.slice                     loaded active   active User Slice of UID 0            
  user-1000.slice                  loaded active   active User Slice of UID 1000          
  user.slice                       loaded active   active User and Session Slice          

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

11 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.
[root@testvm1 ~]#

La première chose à remarquer à propos de ces données est qu'elles montrent des tranches d'utilisateurs pour les UID 0 (racine) et 1000, qui est ma connexion utilisateur. Cela affiche uniquement les tranches et non les services qui font partie de chaque tranche. Ces données montrent qu'une tranche est créée pour chaque utilisateur au moment où il se connecte. Cela peut fournir un moyen de gérer toutes les tâches d'un utilisateur comme une seule entité de groupe de contrôle.

Explorer la hiérarchie des cgroups

Tout va bien jusqu'à présent, mais les cgroups sont hiérarchiques et toutes les unités de service fonctionnent en tant que membres de l'un des cgroups. L'affichage de cette hiérarchie est facile et utilise une ancienne commande et une nouvelle qui fait partie de systemd.

Le ps La commande peut être utilisée pour mapper les processus et leurs emplacements dans la hiérarchie du groupe de contrôle. Notez qu'il est nécessaire de spécifier les colonnes de données souhaitées lors de l'utilisation du ps commande. J'ai considérablement réduit le volume de sortie de cette commande ci-dessous, mais j'ai essayé d'en laisser suffisamment pour que vous puissiez avoir une idée de ce que vous pourriez trouver sur vos systèmes :

[root@testvm1 ~]# ps xawf -eo pid,user,cgroup,args
    PID USER     CGROUP                      COMMAND
      2 root     -                           [kthreadd]
      3 root     -                            \_ [rcu_gp]
      4 root     -                            \_ [rcu_par_gp]
      6 root     -                            \_ [kworker/0:0H-kblockd]
      9 root     -                            \_ [mm_percpu_wq]
     10 root     -                            \_ [ksoftirqd/0]
     11 root     -                            \_ [rcu_sched]
     12 root     -                            \_ [migration/0]
     13 root     -                            \_ [cpuhp/0]
     14 root     -                            \_ [cpuhp/1]
<SNIP>
 625406 root     -                            \_ [kworker/3:0-ata_sff]
 625409 root     -                            \_ [kworker/u8:0-events_unbound]
      1 root     0::/init.scope              /usr/lib/systemd/systemd --switched-root --system --deserialize 30
    588 root     0::/system.slice/systemd-jo /usr/lib/systemd/systemd-journald
    599 root     0::/system.slice/systemd-ud /usr/lib/systemd/systemd-udevd
    741 root     0::/system.slice/auditd.ser /sbin/auditd
    743 root     0::/system.slice/auditd.ser  \_ /usr/sbin/sedispatch
    764 root     0::/system.slice/ModemManag /usr/sbin/ModemManager
    765 root     0::/system.slice/NetworkMan /usr/sbin/NetworkManager --no-daemon
    767 root     0::/system.slice/irqbalance /usr/sbin/irqbalance --foreground
    779 root     0::/system.slice/mcelog.ser /usr/sbin/mcelog --ignorenodev --daemon --foreground
    781 root     0::/system.slice/rngd.servi /sbin/rngd -f
    782 root     0::/system.slice/rsyslog.se /usr/sbin/rsyslogd -n
<SNIP>
    893 root     0::/system.slice/sshd.servi sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
   1130 root     0::/user.slice/user-0.slice  \_ sshd: root [priv]
   1147 root     0::/user.slice/user-0.slice  |   \_ sshd: root@pts/0
   1148 root     0::/user.slice/user-0.slice  |       \_ -bash
   1321 root     0::/user.slice/user-0.slice  |           \_ screen
   1322 root     0::/user.slice/user-0.slice  |               \_ SCREEN
   1323 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash
 498801 root     0::/user.slice/user-0.slice  |                   |   \_ man systemd.resource-control
 498813 root     0::/user.slice/user-0.slice  |                   |       \_ less
   1351 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash
 123293 root     0::/user.slice/user-0.slice  |                   |   \_ man systemd.slice
 123305 root     0::/user.slice/user-0.slice  |                   |       \_ less
   1380 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash
 625412 root     0::/user.slice/user-0.slice  |                   |   \_ ps xawf -eo pid,user,cgroup,args
 625413 root     0::/user.slice/user-0.slice  |                   |   \_ less
 246795 root     0::/user.slice/user-0.slice  |                   \_ /bin/bash
 625338 root     0::/user.slice/user-0.slice  |                       \_ /usr/bin/mc -P /var/tmp/mc-root/mc.pwd.246795
 625340 root     0::/user.slice/user-0.slice  |                           \_ bash -rcfile .bashrc
   1218 root     0::/user.slice/user-1000.sl  \_ sshd: dboth [priv]
   1233 dboth    0::/user.slice/user-1000.sl      \_ sshd: dboth@pts/1
   1235 dboth    0::/user.slice/user-1000.sl          \_ -bash
<SNIP>
   1010 root     0::/system.slice/atd.servic /usr/sbin/atd -f
   1011 root     0::/system.slice/crond.serv /usr/sbin/crond -n
   1098 root     0::/system.slice/lxdm.servi /usr/sbin/lxdm-binary
   1106 root     0::/system.slice/lxdm.servi  \_ /usr/libexec/Xorg -background none :0 vt01 -nolisten tcp -novtswitch -auth /var/run/lxdm/lxdm-:0.auth
 370621 root     0::/user.slice/user-1000.sl  \_ /usr/libexec/lxdm-session
 370631 dboth    0::/user.slice/user-1000.sl      \_ xfce4-session
 370841 dboth    0::/user.slice/user-1000.sl          \_ /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"
 370911 dboth    0::/user.slice/user-1000.sl          \_ xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2
 370930 dboth    0::/user.slice/user-1000.sl          \_ xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952
 370942 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libsystray.so 6 23068680 systr
ay Notification Area Area where notification icons appear
 370943 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libpulseaudio-plugin.so 8 2306
8681 pulseaudio PulseAudio Plugin Adjust the audio volume of the PulseAudio sound system
 370944 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libxfce4powermanager.so 9 2306
8682 power-manager-plugin Power Manager Plugin Display the battery levels of your devices and control the brightness of your display
 370945 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libnotification-plugin.so 10 2
3068683 notification-plugin Notification Plugin Notification plugin for the Xfce panel
 370948 dboth    0::/user.slice/user-1000.sl          |   \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libactions.so 14 23068684 acti
ons Action Buttons Log out, lock or other system actions
 370934 dboth    0::/user.slice/user-1000.sl          \_ Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon
 370939 dboth    0::/user.slice/user-1000.sl          \_ xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324
 370962 dboth    0::/user.slice/user-1000.sl          \_ nm-applet
<SNIP>

Vous pouvez voir toute la hiérarchie avec le systemd-cgls commande, qui est un peu plus simple car elle ne nécessite aucune option complexe.

J'ai considérablement raccourci cette arborescence. également, mais j'en ai laissé suffisamment pour vous donner une idée de la quantité de données ainsi que des types d'entrées que vous devriez voir lorsque vous faites cela sur votre système. Je l'ai fait sur l'une de mes machines virtuelles, et elle fait environ 200 lignes; la quantité de données de mon poste de travail principal est d'environ 250 lignes :

[root@testvm1 ~]# systemd-cgls
Control group /:
-.slice
├─user.slice
│ ├─user-0.slice
│ │ ├─session-1.scope
│ │ │ ├─  1130 sshd: root [priv]
│ │ │ ├─  1147 sshd: root@pts/0
│ │ │ ├─  1148 -bash
│ │ │ ├─  1321 screen
│ │ │ ├─  1322 SCREEN
│ │ │ ├─  1323 /bin/bash
│ │ │ ├─  1351 /bin/bash
│ │ │ ├─  1380 /bin/bash
│ │ │ ├─123293 man systemd.slice
│ │ │ ├─123305 less
│ │ │ ├─246795 /bin/bash
│ │ │ ├─371371 man systemd-cgls
│ │ │ ├─371383 less
│ │ │ ├─371469 systemd-cgls
│ │ │ └─371470 less
│ │ └─[email protected]
│ │   ├─dbus-broker.service
│ │   │ ├─1170 /usr/bin/dbus-broker-launch --scope user
│ │   │ └─1171 dbus-broker --log 4 --controller 12 --machine-id 3bccd1140fca488187f8a1439c832f07 --max-bytes 100000000000000 --max-fds 25000000000000 --max->
│ │   ├─gvfs-daemon.service
│ │   │ └─1173 /usr/libexec/gvfsd
│ │   └─init.scope
│ │     ├─1137 /usr/lib/systemd/systemd --user
│ │     └─1138 (sd-pam)
│ └─user-1000.slice
│   ├─[email protected]
│   │ ├─dbus\x2d:1.2\x2dorg.xfce.Xfconf.slice
│   │ │ └─dbus-:[email protected]
│   │ │   └─370748 /usr/lib64/xfce4/xfconf/xfconfd
│   │ ├─dbus\x2d:1.2\x2dca.desrt.dconf.slice
│   │ │ └─dbus-:[email protected]
│   │ │   └─371262 /usr/libexec/dconf-service
│   │ ├─dbus-broker.service
│   │ │ ├─1260 /usr/bin/dbus-broker-launch --scope user
│   │ │ └─1261 dbus-broker --log 4 --controller 11 --machine-id
<SNIP>
│   │ └─gvfs-mtp-volume-monitor.service
│   │   └─370987 /usr/libexec/gvfs-mtp-volume-monitor
│   ├─session-3.scope
│   │ ├─1218 sshd: dboth [priv]
│   │ ├─1233 sshd: dboth@pts/1
│   │ └─1235 -bash
│   └─session-7.scope
│     ├─370621 /usr/libexec/lxdm-session
│     ├─370631 xfce4-session
│     ├─370805 /usr/bin/VBoxClient --clipboard
│     ├─370806 /usr/bin/VBoxClient --clipboard
│     ├─370817 /usr/bin/VBoxClient --seamless
│     ├─370818 /usr/bin/VBoxClient --seamless
│     ├─370824 /usr/bin/VBoxClient --draganddrop
│     ├─370825 /usr/bin/VBoxClient --draganddrop
│     ├─370841 /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"
│     ├─370910 /bin/gpg-agent --sh --daemon --write-env-file /home/dboth/.cache/gpg-agent-info
│     ├─370911 xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2
│     ├─370923 xfsettingsd --display :0.0 --sm-client-id 261b4a437-3029-461c-9551-68c2c42f4fef
│     ├─370930 xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952
│     ├─370934 Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon
│     ├─370939 xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324
<SNIP>
└─system.slice
  ├─rngd.service
  │ └─1650 /sbin/rngd -f
  ├─irqbalance.service
  │ └─1631 /usr/sbin/irqbalance --foreground
  ├─fprintd.service
  │ └─303383 /usr/libexec/fprintd
  ├─systemd-udevd.service
  │ └─956 /usr/lib/systemd/systemd-udevd
<SNIP>
  ├─systemd-journald.service
  │ └─588 /usr/lib/systemd/systemd-journald
  ├─atd.service
  │ └─1010 /usr/sbin/atd -f
  ├─system-dbus\x2d:1.10\x2dorg.freedesktop.problems.slice
  │ └─dbus-:[email protected]
  │   └─371197 /usr/sbin/abrt-dbus -t133
  ├─sshd.service
  │ └─893 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
  ├─vboxservice.service
  │ └─802 /usr/sbin/VBoxService -f
  ├─crond.service
  │ └─1011 /usr/sbin/crond -n
  ├─NetworkManager.service
  │ └─765 /usr/sbin/NetworkManager --no-daemon
  ├─switcheroo-control.service
  │ └─787 /usr/libexec/switcheroo-control
 <SNIP>

Cette arborescence affiche toutes les tranches utilisateur et système ainsi que les services et programmes exécutés dans chaque groupe de contrôle. Remarquez les unités appelées "portées", qui regroupent les programmes associés dans une unité de gestion, dans le user-1000.slice dans la liste ci-dessus. Le user-1000.slice/session-7.scope cgroup contient la hiérarchie du programme de bureau de l'interface graphique, en commençant par la session du gestionnaire d'affichage LXDM et toutes ses sous-tâches, y compris des éléments tels que le shell Bash et le gestionnaire de fichiers de l'interface graphique Thunar.

Les unités de portée ne sont pas définies dans les fichiers de configuration, mais sont générées par programmation à la suite du démarrage de groupes de programmes associés. Les unités d'étendue ne créent ni ne démarrent les processus exécutés dans le cadre de ce groupe de contrôle. Tous les processus dans le périmètre sont égaux et il n'y a pas de hiérarchie interne. La vie d'une étendue commence lorsque le premier processus est créé et se termine lorsque le dernier processus est détruit.

Ouvrez plusieurs fenêtres sur votre bureau, telles que les émulateurs de terminaux, LibreOffice ou tout ce que vous voulez, puis passez à une console virtuelle disponible et démarrez quelque chose comme top ou Commandant de minuit. Exécutez le systemd-cgls commande sur votre hôte et notez la hiérarchie globale et les unités de portée.

Le systemd-cgls La commande fournit une représentation plus complète de la hiérarchie du cgroup (et des détails des unités qui la composent) que toute autre commande que j'ai trouvée. Je préfère sa représentation plus propre de l'arbre que ce que le ps fournit la commande.

Avec un peu d'aide de mes amis

Après avoir couvert ces bases, j'avais prévu d'approfondir les cgroups et leur utilisation, mais j'ai découvert une série de quatre excellents articles de Steve Ovens de Red Hat sur le site sœur d'Opensource.com, Enable Sysadmin. Plutôt que de réécrire essentiellement les articles de Steve, j'ai décidé qu'il valait mieux profiter de son expertise de cgroup en créant un lien vers eux :

  1. Introduction aux cgroups d'un administrateur système Linux
  2. Comment gérer les cgroups avec CPUShares
  3. Gérer les cgroups à la dure, manuellement
  4. Gérer les cgroups avec systemd

Appréciez-les et apprenez d'eux, comme je l'ai fait.

Autres ressources

De nombreuses informations sur systemd sont disponibles sur Internet, mais la plupart sont concises, obtuses ou même trompeuses. En plus des ressources mentionnées dans cet article, les pages Web suivantes offrent des informations plus détaillées et fiables sur le démarrage de systemd. Cette liste s'est allongée depuis que j'ai commencé cette série d'articles pour refléter les recherches que j'ai effectuées.

  • Le projet Fedora propose un bon guide pratique de systemd. Il contient à peu près tout ce que vous devez savoir pour configurer, gérer et entretenir un ordinateur Fedora à l'aide de systemd.
  • Le projet Fedora a également une bonne feuille de triche qui renvoie les anciennes commandes SystemV à des commandes systemd comparables.
  • La page de manuel systemd.unit(5) contient une belle liste de sections de fichiers unitaires et leurs options de configuration, ainsi que des descriptions concises de chacune.
  • La documentation Red Hat contient une bonne description de la structure des fichiers Unit ainsi que d'autres informations importantes.
  • Pour des informations techniques détaillées sur systemd et les raisons de sa création, consultez la description de systemd par Freedesktop.org. Cette page est l'une des meilleures que j'ai trouvées car elle contient de nombreux liens vers d'autres documents importants et précis.
  • Linux.com's "More systemd fun" propose des informations et des conseils plus avancés sur systemd.
  • Consultez la page de manuel de systemd.resource-control(5).
  • Dans Guide de l'utilisateur et de l'administrateur du noyau Linux , consultez l'entrée Control Group v2.

Il existe également une série d'articles profondément techniques pour les administrateurs système Linux par Lennart Poettering, le concepteur et développeur principal de systemd. Ces articles ont été écrits entre avril 2010 et septembre 2011, mais ils sont tout aussi pertinents aujourd'hui qu'ils l'étaient alors. Une grande partie de tout ce qui a été écrit sur systemd et son écosystème est basé sur ces articles.

  • Repenser le PID 1
  • systemd pour les administrateurs, partie I
  • systemd pour les administrateurs, partie II
  • systemd pour les administrateurs, partie III
  • systemd pour les administrateurs, partie IV
  • systemd pour les administrateurs, partie V
  • systemd pour les administrateurs, partie VI
  • systemd pour les administrateurs, partie VII
  • systemd pour les administrateurs, partie VIII
  • systemd pour les administrateurs, partie IX
  • systemd pour les administrateurs, partie X
  • systemd pour les administrateurs, partie XI

Linux
  1. Gérer votre matériel connecté sous Linux avec systemd-udevd

  2. Créer et gérer des partitions sous Linux avec parted

  3. RedHat / CentOS :Gérer le RAID logiciel avec mdadm

  4. Systemd avec plusieurs execStart

  5. Limiter la mémoire et le processeur avec lxc-execute

Comment automatiser vos ressources AWS avec les modèles CloudFormation

Désencombrer la gestion des processus avec ps ou systemd

Gérer les cgroups à la dure - manuellement

Comment gérer les cgroups avec CPUShares

Gestion des cgroups avec systemd

Gestion des journaux avec Logrotate sur Ubuntu