Saltar al contenido principal

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