Mediante cgroups podemos limitar el número de cores disponibles para un determinado proceso, vamos a ver cómo.
Para hacer los cambios persistentes, deberemos editar el fichero /etc/cgconfig.conf , por ejemplo:
group vuitcores { perm { admin { uid = root; } task { uid = jprats; } } cpuset { cpuset.mems=0; cpuset.cpus="0-7"; } }
Mediante dicha sintaxi estamos definiendo:
- Un grupo llamado: vuitcores
- Opcionalmente, podemos definir permisos mediante la directiva perm
- Limitamos el cpuset (mems y cpus son options obligaatorias):
- cpuset.mems: Listado de nodos de memoria que permitimos acceso (para NUMA)
- cpuset.cpus: Listado de CPUs que permitimos acceso a este cgroup
Reiniciamos el servicio para aplicar los cambios:
# /etc/init.d/cgconfig restart Stopping cgconfig service: [ OK ] Starting cgconfig service: [ OK ]
Mediante nproc podremos validar el número de cores disponibles para el proceso:
# /usr/bin/nproc 32
Para ejecutar una tarea en un cgroup deberemos usar cgexec indicando el grupo mediante la opción -g:
# cgexec -g cpuset:vuitcores /usr/bin/nproc 8
Podemos apreciar que en este caso nproc nos reporta 8 cores en lugar de los 32 que tiene el equipo.
Tags: cgroups