Voici la procédure de configuration et d'utilisation des groupes de ressources sous Linux :
1. Pour utiliser les cgroups, vous devez installer le package "libcgroup" sur votre système :
# yum install libcgroup
2. Créez un fichier de configuration pour les cgroups :
# vi /etc/cgconfig.conf mount { cpu = /cgroup/cpumem; cpuset = /cgroup/cpumem; memory = /cgroup/cpumem; } # High priority group group mysqldb { cpu { # Allocate the relative share of CPU resources equal to 75% cpu.shares="750"; } cpuset { # No alternate memory nodes if the system is not NUMA cpuset.mems="0"; # Allocate CPU cores 2 through 5 to tasks in the cgroup cpuset.cpus="2-5"; } memory { # Allocate at most 8 GB of memory to tasks memory.limit_in_bytes="8G"; # Allocate at most 16 GB of memory+swap to tasks memory.memsw.limit_in_bytes="16G"; # Apply a soft limit of 4 GB to tasks memory.soft_limit_in_bytes="4G"; } }
3. Créez un fichier de définition de règles de groupe de contrôle :
# vi /etc/cgrules.conf # Assign tasks run by the mysql user to mysqldb mysql cpu,cpuset,memory mysqldb
4. Démarrez le service cgconfig et configurez-le pour qu'il démarre au démarrage du système.
$ service cgconfig start $ chkconfig cgconfig on
5. À ce stade, le groupe de ressources pour mysql est prêt et en place. Redémarrez mysqld et les ressources seront autorisées selon la configuration et les règles fournies ci-dessus.
6. Vous pouvez également rechercher et modifier les limites du groupe de ressources pendant l'exécution.
– Pour trouver les limites de ressources :
$ cgget -r memory.stat mysqldb
– Pour définir des limites de ressources :
$ cgset -r blkio.throttle.read_bps_device="8:1 0" iocap1
– Pour enregistrer la configuration modifiée actuelle pour une utilisation future :
$ cgsnapshot -s > current_cgconfig.conf