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