Capítulo 4.4 - Prioridades y valores Nice
Objetivos de aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender las prioridades de los procesos
- Utilizar valores nice
- Cambiar las prioridades con nice y renice
- Comprender el scheduler de Linux
¿Qué es la Prioridad?
La prioridad de un proceso determina su acceso a la CPU. Cuanto mayor es la prioridad, más tiempo de CPU obtiene el proceso.
Valores Nice
Escala
Valores nice: -20 a +19
- -20: Prioridad más alta (solo root)
- 0: Prioridad por defecto
- +19: Prioridad más baja
Regla:
- Más bajo = más prioritario
- Más alto = menos prioritario
Ver la Prioridad
# Con ps
ps -o pid,ni,comm
ps aux | head
# Columna NI = valor nice
# Columna PRI = prioridad real (calculada)
# Con top
top
# Columna NI muestra el valor nice
Cambiar la Prioridad
nice - Al Iniciar
# Iniciar con prioridad baja
nice -n 10 comando
nice -n +10 comando # Lo mismo
# Iniciar con prioridad alta (root)
sudo nice -n -10 comando
# Verificar
ps -o pid,ni,comm | grep comando
renice - Proceso Existente
# Cambiar prioridad de un proceso
renice 10 PID
# Por usuario
sudo renice 10 -u user1
# Por grupo
sudo renice 10 -g developers
# Por proceso y sus hijos
sudo renice 10 -p PID
Ejemplos:
# Proceso que consume mucha CPU → prioridad baja
renice 15 $(pidof backup_script)
# Proceso importante → prioridad alta (root)
sudo renice -10 $(pidof critical_app)
Scheduler de Linux (CFS)
Completely Fair Scheduler
El scheduler de Linux utiliza los valores nice para equilibrar el tiempo de CPU:
Funcionamiento:
- Valor nice más bajo = más tiempo de CPU
- Equidad entre procesos con la misma prioridad
- Tiene en cuenta el tiempo ya utilizado
Procesos en Tiempo Real
chrt - Tiempo Real
Para procesos que requieren garantía de tiempo:
# Ver las políticas
chrt -m
# Definir política FIFO
sudo chrt -f 50 comando
# -f: FIFO
# 50: Prioridad (1-99)
# Definir política Round-Robin
sudo chrt -r 50 comando
# Cambiar proceso existente
sudo chrt -f -p 50 PID
Políticas:
- SCHED_FIFO: First In First Out
- SCHED_RR: Round Robin
- SCHED_OTHER: Normal (CFS)
Atención: ¡Los procesos en tiempo real pueden monopolizar la CPU!
Ejemplos Prácticos
Escenario 1: Respaldo Nocturno
# Ejecutar backup con prioridad muy baja
nice -n 19 backup_script.sh &
# No interrumpirá a otros procesos
Escenario 2: Proceso Crítico
# Aumentar la prioridad de un proceso importante
sudo renice -10 $(pidof database_server)
# Obtendrá más tiempo de CPU
Escenario 3: Balanceo
# Varios procesos, balancear
renice 5 $(pidof app1)
renice 5 $(pidof app2)
renice 5 $(pidof app3)
# Todos con la misma prioridad
Monitoreo de Prioridades
top/htop
# Ver valores nice
top
# Columna NI
# Ordenar por prioridad
# En top: presione 'r' y luego ingrese el PID
ps con Prioridad
# Ver nice y prioridad
ps -eo pid,ni,pri,comm
# Ordenar por prioridad
ps -eo pid,ni,pri,comm --sort=-pri
Resumen
En este capítulo, usted ha aprendido:
Valores nice: -20 (alto) a +19 (bajo), 0 por defecto
Cambiar: nice (inicio), renice (existente)
Scheduler: CFS equilibra según valores nice
Tiempo real: chrt para garantías en tiempo real
Monitoreo: ps, top para ver prioridades
Práctica: Ajustar según la importancia del proceso
Próximos Pasos
Capítulo 4.5: Procesos y Recursos
Capítulo 4.6: Jobs y Tareas en Segundo Plano
Capítulo creado el: Diciembre 2024