Instalar CGroups en Debian, Ubuntu y derivados.
En un anterior articulo ya vimos como instalar CGroups en CentOS, Fedora y Gentoo. En el que estamos viendo realizaremos la misma operación, pero en Debian, Ubuntu, Linux Mint y todos sus derivados.
Crearemos un sistema de archivos de tipo cgroup y todas las operaciones se ejecutaran en él.
*** Los ejemplos de configuración son diferentes, pero compatibles. Por tanto revisa los dos artículos ***
Instalar CGroups en Debian, Ubuntu y derivados
La instalación la podemos realizar usando libcgroup, cgmanager o systemd.
De la misma manera que la instalación, su uso también lo podemos realizar de diversas formas.
- Accediendo al sistema de archivos cgroup directamente.
- Usando el cliente cgm (cgmanager).
- A través de cgcreate, cgexec y cgclassify (parte de cgroup-tools).
- Haciendo uso de cgconfig.conf y cgrules.conf (parte de cgroup-tools).
En nuestro caso… realizaremos las operaciones haciendo uso de la ultima opción, por tanto debemos instalar «cgroup-tools«.
sudo apt-get install cgroup-tools
Por defecto, Debian deshabilita el controlador de memoria, así que lo habilitaremos agregando lo siguiente en:
nano /etc/default/grub
agregamos…
GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1"
guarda y cierra el editor.
Actualizamos el Grub.
sudo update-grub
Definimos roles
nano /etc/cgconfig.conf
Ejemplo que puedes usar.
group app/editor { cpu { cpu.shares = 500; } memory { memory.limit_in_bytes = 1000000000; } } group app/browser { cpu { cpu.shares = 300; } memory { memory.limit_in_bytes = 1000000000; } } group app/util { cpu { cpu.shares = 300; } memory { memory.limit_in_bytes = 500000000; } }
El valor máximo para cpu.shares es 1000, por tanto 300 establece al 30% como límite de uso para una aplicación (en este ejemplo).
Aplicamos este ejemplo al software del sistema.
nano /etc/cgrules.conf
ejemplo:
*:emacs cpu,memory app/editor/ *:conkeror cpu,memory app/browser/ *:firefox cpu,memory app/browser/ *:slack cpu,memory app/util/ *:filezilla cpu,memory app/util/
Aplicamos las reglas…
cgconfigparser -l /etc/cgconfig.conf cgrulesengd
Verificamos que las reglas fueron aplicadas.
cat /proc/`pidof filezilla`/cgroup | grep app
ejemplo de salida valida.
# 5:memory:/app/util # 2:cpu,cpuacct:/app/util
Verificamos el uso de memoria que hace una aplicación:
smem -P filezilla
ejemplo de salida valida.
PID User Command Swap USS PSS RSS 1955 sergio /home/sergio/.filezilla 0 191800 192388 201124
Damos por concluidos los artículos sobre CGroups, altamente recomendable sobre todo si eres el sysadmin de un servidor de empresa.