¿Desactivar el intercambio para un solo proceso con cgroups?

15

Me gustaría desactivar el intercambio para un solo proceso. El intercambio debería funcionar como de costumbre para los otros procesos.

¿Cómo puedo implementar esto con cgroups?

iNode
fuente

Respuestas:

9

De la documentación del kernel relacionada con memory.swappiness:

5.3 swappiness

Similar a / proc / sys / vm / swappiness, pero afecta solo a una jerarquía de grupos.

El siguiente intercambio de cgroups no se puede cambiar.
- root cgroup (usa / proc / sys / vm / swappiness).
- un cgroup que usa la jerarquía y tiene otros cgroup debajo de él.
- un cgroup que usa jerarquía y no la raíz de la jerarquía.

Desde el portal de clientes de Red Hat:

memory.swappiness

establece la tendencia del kernel a intercambiar la memoria de proceso utilizada por las tareas en este cgroup en lugar de reclamar páginas del caché de páginas. Esta es la misma tendencia, calculada de la misma manera, como se establece en / proc / sys / vm / swappiness para el sistema en su conjunto. El valor predeterminado es 60. Los valores inferiores a 60 disminuyen la tendencia del kernel a intercambiar memoria de proceso, los valores superiores a 60 aumentan la tendencia del kernel a intercambiar memoria de proceso y los valores superiores a 100 permiten que el kernel intercambie páginas que son parte de El espacio de direcciones de los procesos en este cgroup.

Tenga en cuenta que un valor de 0 no impide que se intercambie la memoria del proceso; El intercambio aún puede ocurrir cuando hay escasez de memoria del sistema porque la lógica de administración de memoria virtual global no lee el valor de cgroup. Para bloquear páginas por completo, use mlock () en lugar de cgroups.

:: No puede cambiar la capacidad de intercambio de los siguientes grupos:
* el cgroup raíz, que utiliza la configuración de intercambio en / proc / sys / vm / swappiness.
* un cgroup que tiene grupos secundarios debajo de él.

EDITAR: si está interesado en saber exactamente cómo configurarlo, configúrelo exactamente como la mayoría de los otros atributos de cgroup:

 # cd /mnt/cgroup/<cgroupName>
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59
Bratchley
fuente
¿Qué pasa solo con los archivos /tmpmontados en el interior tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai
Es bueno que haya citado la parte relevante de la documentación del núcleo aquí: el enlace está roto.
mgarey
El enlace a la documentación del kernel de Linux está roto. Use este en su lugar kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg el
@AndrewEisenberg Siéntase libre de editar la respuesta si lo desea
Bratchley
Hmmm ... no me deja. Dice que la edición debe tener más de 6 caracteres. Probablemente no hay suficiente reputación.
Andrew Eisenberg el