Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Cuotas, límites y aislamiento básico

5 tareas · 35 min · Principiante

Un trabajo de CI que consume toda la memoria, llena el disco o lanza procesos sin tope puede tumbar el ejecutor y, con él, el pipeline de todos. Linux ofrece topes por usuario, por grupo de procesos y por unidad de servicio, y también opciones de aislamiento básico. En esta sala los lees en el ejecutor 03 de Molinos Zarzuela, una empresa ficticia, sin cambiar nada.

0 de 5 · 0%

Objetivo de la sala

Un trabajo de CI que consume toda la memoria, llena el disco o lanza procesos sin tope puede tumbar el ejecutor y, con él, el pipeline de todos. Linux ofrece topes por usuario, por grupo de procesos y por unidad de servicio, y también opciones de aislamiento básico. En esta sala los lees en el ejecutor 03 de Molinos Zarzuela, una empresa ficticia, sin cambiar nada.

Hay dos mecanismos que se confunden. Los límites de recursos (ulimit, y su configuración en /etc/security/limits.d) fijan topes del proceso y sus hijos: archivos abiertos, procesos de un usuario, tamaño de pila. Los cgroups (grupos de control) agrupan procesos y fijan topes para el conjunto: memoria total, número de procesos, tiempo de CPU.

systemd usa cgroups por debajo: las directivas MemoryMax= y TasksMax= de una unidad se traducen en archivos como memory.max y pids.max en /sys/fs/cgroup. Y un valor max o infinity significa que no hay tope.

Responde para continuar

¿En qué se diferencia un límite de ulimit de un cgroup?

Ver pista de ayuda

Uno habla de «un proceso»; el otro, de «todo el grupo».

Las unidades de systemd del ejecutor viven en /etc/systemd/system. Un servicio sin MemoryMax= (o con infinity) puede llevarse toda la memoria del equipo ante un fallo. Compara las tres unidades.

Responde para continuar

Escribe el nombre de la unidad (sin el sufijo .service) cuyo MemoryMax es infinity.

Ver pista de ayuda

Haz cat de cada archivo y mira la línea MemoryMax.

Un disco lleno detiene los trabajos con errores confusos. df -h muestra el espacio por punto de montaje y df -i los inodos (cada archivo usa uno: una partición puede quedarse sin ellos con espacio libre). Las cuotas de disco por usuario existen para evitar que una cuenta se coma el volumen. Lee el informe del 5 de octubre.

Responde para continuar

Escribe el punto de montaje cuyo espacio está al 100 % de uso.

Ver pista de ayuda

Mira la primera parte del archivo (df -h), no la de inodos.

Los archivos de cgroup guardan los topes en bytes. Un gibibyte (GiB) son 1024 × 1024 × 1024 bytes, es decir, 1 073 741 824. Lee el tope de memoria del grupo del ejecutor, y recuerda que memory.events cuenta en oom_kill cuántas veces el kernel mató procesos por pasarse del tope.

Responde para continuar

¿Cuántos GiB son el valor de memory.max del grupo ejecutor.slice?

Ver pista de ayuda

Divide el número del archivo memory.max entre 1073741824.

Además de los topes, una unidad de systemd puede restringir lo que el servicio ve y puede hacer: NoNewPrivileges=yes impide ganar privilegios (por ejemplo, vía setuid), PrivateTmp=yes le da una carpeta temporal propia y ProtectSystem=strict deja el sistema de archivos en solo lectura salvo las rutas de ReadWritePaths=. No es un aislamiento completo, pero es barato y se lee de un vistazo.

Responde para continuar

¿Qué combinación aplicarías al servicio del ejecutor?

Ver pista de ayuda

Busca la opción que limita y a la vez restringe, no la que quita barreras.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad