Comment activer la gestion swap dans les cgroups

De Ikoula Wiki
Jump to navigation Jump to search

Explication

Lorsque vous utilisez Docker il est fortement recommandé de procéder à une optimisation de l'utilisation des cgroups.
L'utilisation de 'cgroup' permet de limiter l'utilisation de ressources par des processus, typiquement dans Docker cela permet de limiter l'utilisation de ressources par les containers. Ce mécanisme permet donc de reserver une base minimale de ressources à l'hôte et d'isoler plus efficacement un éventuel problème d'un applicatif déployé.
La pluspart des Kernels récents dispose de configuiration basique suffisante pour l'utilisation standards de Docker. Il est tout de même possible de rencontrer un message d'avertissement lié à la non configuration de la swap au niveau des cgroups inexistante :

WARNING: No kernel memory limit support

Ce type de WARNING se retrouve par exemple en fin retour de la commande docker info.
Vous pouvez vous en assurez en vérifiant directement la configuration du kernel actuellement en cours d'utilisation que le support de la swap ne soit pas actif dans les cgroups :
à titre d'exmple vous pouvez vérifier que la ligne CONFIG_MEMCG_SWAP= soit à no

root@XXXXXXXX : # grep -i swap /boot/config-`uname -r`
CONFIG_SWAP=y
CONFIG_MEMCG_SWAP=n
# CONFIG_MEMCG_SWAP_ENABLED is not set
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_FRONTSWAP=y
CONFIG_ZSWAP=y
CONFIG_MTD_SWAP=m
CONFIG_NFS_SWAP=y
CONFIG_SUNRPC_SWAP=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set

Correction

Ouvrez un éditeur le fichier /etc/default/grub :

root@XXXXXXXX : # vi /etc/default/grub

Et ajoutez ceci à la ligne GRUB_CMDLINE_LINUX=""

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

Il vous faudra par la suite régénérez votre configuration de grub et redémarrer le serveur pour pouvoir en prendre compte. Pour ce faire afin de régénérez la configuration de votre GRUB :

root@XXXXXXXX : # grub-mkconfig -o /boot/grub/grub.cfg

Effectuer un redémarrage de votre serveur et vérifiez à nouveau la configuration du kernel :

root@XXXXXXXX : #  grep -i CONFIG_MEMCG_SWAP= /boot/config-`uname -r`
CONFIG_MEMCG_SWAP=y

Vous pourrez remarquer la présence du yes
Vous pouvez à nouveau lancer la commande docker info, vous n'aurez plus le WARNING