Skip to content

Introducción

Optimizar el rendimiento en Linux es clave para garantizar eficiencia y estabilidad. Con herramientas como tuned y el ajuste de prioridades de procesos mediante nice y renice, los administradores pueden mejorar la distribución de recursos, reducir la latencia y adaptar el sistema a distintas cargas de trabajo.

Objetivos

  • Ajustar el rendimiento del sistema con tuned y sus perfiles predefinidos.
  • Modificar la prioridad de procesos con nice y renice para optimizar el uso de CPU.
  • Comprender el impacto de las políticas de programación en la ejecución de tareas.
  • Aplicar estrategias dinámicas para balancear la carga del sistema.

Ajuste del Rendimiento del Sistema en Linux

Optimizar el rendimiento de un sistema Linux puede lograrse mediante la selección de perfiles de ajuste administrados por el daemon tuned. Este servicio permite aplicar configuraciones específicas para mejorar el desempeño del sistema según la carga de trabajo.

Existen dos tipos de ajuste:

  • Ajuste estático: Se aplica al inicio del sistema y configura parámetros predefinidos del kernel sin modificarlos en tiempo de ejecución.
  • Ajuste dinámico: Monitorea la actividad del sistema y ajusta la configuración en función de los cambios de comportamiento en tiempo real.

El daemon tuned utiliza complementos de monitoreo para analizar el estado del sistema y complementos de ajuste para modificar parámetros clave.

Complementos de Monitoreo

  • disk: Analiza la carga del disco según las operaciones de E/S.
  • net: Monitorea el tráfico de red basado en paquetes transferidos.
  • load: Evalúa la carga de la CPU.

Complementos de Ajuste

  • disk: Configura el programador de disco y la gestión de energía.
  • net: Ajusta la velocidad de la interfaz y la funcionalidad Wake-on-LAN.
  • cpu: Modifica la latencia y el regulador de CPU.

Para habilitar el ajuste dinámico, se debe modificar el archivo /etc/tuned/tuned-main.conf:

dynamic_tuning = 1
update_interval = 10

Esto permite que tuned ajuste los parámetros del sistema cada 10 segundos.

Perfiles de Ajuste con tuned

El daemon tuned proporciona varios perfiles de ajuste predefinidos, cada uno optimizado para diferentes escenarios de uso:

Perfil Propósito
balanced Equilibrio entre rendimiento y ahorro de energía.
powersave Maximiza el ahorro de energía.
throughput-performance Optimiza el rendimiento general del sistema.
latency-performance Reduce la latencia para servidores de alto rendimiento.
network-throughput Mejora el rendimiento de la red.
network-latency Reduce la latencia de red.
virtual-guest Optimiza el rendimiento en máquinas virtuales.
virtual-host Mejora el rendimiento en servidores de virtualización.

Para listar los perfiles disponibles, se usa:

tuned-adm list

Para activar un perfil específico:

tuned-adm profile throughput-performance

Para verificar el perfil activo:

tuned-adm active

Programación y Prioridad de Procesos en Linux

Programación de Procesos

Los sistemas Linux utilizan un programador de procesos para gestionar la ejecución de múltiples tareas en la CPU. Este programador emplea técnicas de multitarea y particionamiento de tiempo, permitiendo que varios procesos compartan los recursos de procesamiento de manera equitativa.

Cuando la carga de la CPU es alta, el sistema debe decidir qué procesos reciben tiempo de ejecución primero. Para ello, Linux implementa políticas de programación, que pueden ser:

  • Interactivas: Diseñadas para aplicaciones que requieren respuesta rápida del usuario.
  • Por lotes: Procesos que no requieren interacción inmediata y pueden ejecutarse en segundo plano.
  • Tiempo real: Aplicaciones que necesitan tiempos de respuesta garantizados.

El Programador Completamente Equitativo (CFS) es el algoritmo predeterminado en Linux para gestionar procesos normales. Este organiza los procesos en un árbol de búsqueda binario, priorizando aquellos que han consumido menos tiempo de CPU.

Ajuste de Prioridad con nice y renice

Cada proceso en Linux tiene un valor de prioridad, que determina su importancia en la programación de la CPU. Este valor se ajusta mediante el valor nice, que varía de -20 (mayor prioridad) a 19 (menor prioridad).

  • Valores nice bajos (-20 a 0): Procesos con mayor prioridad, ejecutados antes que otros.
  • Valores nice altos (1 a 19): Procesos con menor prioridad, ejecutados después de otros.

Para iniciar un proceso con un valor nice específico:

nice -n 10 sleep 60 &

Para modificar la prioridad de un proceso en ejecución:

renice -n 5 2740

Solo los usuarios con privilegios pueden disminuir el valor nice de un proceso (aumentando su prioridad). Los usuarios sin privilegios solo pueden incrementar el valor nice de sus propios procesos.

Visualización de Prioridades de Procesos

Para ver los valores nice y prioridad de los procesos en ejecución, se pueden usar los siguientes comandos:

  • top: Muestra la prioridad (PR) y el valor nice (NI) de cada proceso.
    top
    
  • ps: Lista los procesos con su valor nice.
    ps axo pid,comm,nice,cls --sort=-nice
    

Ejemplo de salida:

PID COMMAND        NI CLS  
33  khugepaged     19 TS  
32  ksmd            5 TS  
814 rtkit-daemon    1 TS  
1   systemd         0 TS  

Conclusión

El ajuste de rendimiento permite maximizar la eficiencia del sistema Linux, optimizando la ejecución de procesos y adaptándolo a las necesidades específicas. Con tuned y la gestión de prioridades, se logra un entorno más estable y ágil, mejorando la experiencia del usuario y el desempeño de servidores.