Skip to content

Laboratorio Tuning

Objetivos

  • Configurar perfiles de ajuste con tuned para mejorar el rendimiento del sistema.
  • Identificar y comparar diferentes perfiles de optimización según la carga de trabajo.
  • Ajustar la prioridad de procesos con nice y renice para optimizar el uso de CPU.
  • Evaluar el impacto de las modificaciones de prioridad en la ejecución de tareas.
  • Aplicar técnicas de monitoreo de rendimiento para tomar decisiones de ajuste eficientes.

Entorno Inicial

  • Usuario: student
  • Máquina: servera
  • Contraseña inicial: student
  • Herramientas utilizadas: Shell Bash y utilidades básicas de Linux.

Pasos del Laboratorio

Prerequisitos

  1. Inicio de sesión

    • Inicia sesión en la máquina servera desde bastion como el usuario student utilizando la llave privada proporcionada:

      ssh student-#-servera
      

Parte 1: Configuración y Verificación de tuned

  1. Cambiar a superusuario

    • Usa el comando sudo -i para obtener privilegios de root:
      sudo -i
      
  2. Instalar y habilitar tuned

    • Instalar el paquete:
      dnf install tuned -y
      
    • Verificar que el servicio está habilitado:
      systemctl is-enabled tuned
      
    • Salida esperada:
      enabled
      
    • Confirmar que el servicio está en ejecución:
      systemctl is-active tuned
      
    • Salida esperada:
      active
      
  3. Listar los perfiles de ajuste disponibles

    • Ver los perfiles disponibles:
      sudo tuned-adm list
      
    • Ejemplo de salida:
      Available profiles:  
      - balanced  
      - desktop  
      - latency-performance  
      - network-latency  
      - network-throughput  
      - powersave  
      - throughput-performance  
      - virtual-guest  
      - virtual-host  
      
  4. Verificar el perfil activo

    • Consultar el perfil activo:
      sudo tuned-adm active
      
    • Ejemplo de salida:
      Current active profile: virtual-guest
      
  5. Revisar la configuración del perfil activo

    • Inspeccionar el archivo de configuración del perfil virtual-guest:
      cat /usr/lib/tuned/virtual-guest/tuned.conf
      
    • Ejemplo de parámetros configurados:
      [sysctl]  
      vm.dirty_ratio = 30  
      vm.swappiness = 30  
      
  6. Verificar que estos valores están aplicados en el sistema

    • Consultar los valores actuales:
      sysctl vm.dirty_ratio vm.swappiness
      
    • Salida esperada:
      vm.dirty_ratio = 30  
      vm.swappiness = 30  
      

Parte 2: Ajuste de Prioridad de Procesos con nice y renice

  1. Determinar la cantidad de núcleos de CPU

    • Contar los procesadores virtuales en el sistema:
      grep -c '^processor' /proc/cpuinfo
      
    • Ejemplo de salida:
      2
      
    • Esto indica que el sistema tiene 2 núcleos de CPU.
  2. Iniciar procesos de carga de CPU

    • Usar un bucle para iniciar dos instancias del comando sha1sum /dev/zero & por cada núcleo de CPU:
      for i in {1..4}; do sha1sum /dev/zero & done
      
    • Ejemplo de salida:
      [1] 1132  
      [2] 1133  
      [3] 1134  
      [4] 1135  
      
  3. Verificar que los procesos están en ejecución

    • Listar los procesos en segundo plano:
      jobs
      
    • Ejemplo de salida:
      [1] Running sha1sum /dev/zero &  
      [2] Running sha1sum /dev/zero &  
      [3]- Running sha1sum /dev/zero &  
      [4]+ Running sha1sum /dev/zero &  
      
  4. Visualizar el uso de CPU de los procesos

    • Mostrar el porcentaje de uso de CPU de cada proceso sha1sum:
      ps u $(pgrep sha1sum)
      
    • Ejemplo de salida:
      USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND  
      student 1132 49.6 0.1 225336 2288 pts/0 R 11:40 2:40 sha1sum /dev/zero  
      student 1133 49.6 0.1 225336 2296 pts/0 R 11:40 2:40 sha1sum /dev/zero  
      student 1134 49.6 0.1 225336 2264 pts/0 R 11:40 2:40 sha1sum /dev/zero  
      student 1135 49.6 0.1 225336 2280 pts/0 R 11:40 2:40 sha1sum /dev/zero  
      
  5. Cerrar los procesos en ejecución

    • Detener todos los procesos sha1sum:
      pkill sha1sum
      
    • Verificar que no haya trabajos en ejecución:
      jobs
      
  6. Iniciar procesos con diferentes niveles nice

    • Iniciar tres instancias normales de sha1sum /dev/zero &:
      for i in {1..3}; do sha1sum /dev/zero & done
      
    • Iniciar una cuarta instancia con un nivel nice de 10:
      nice -n 10 sha1sum /dev/zero &
      
  7. Verificar el impacto del nivel nice en el uso de CPU

    • Mostrar el PID, uso de CPU y nivel nice de cada proceso:
      ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
      
    • Ejemplo de salida:
      PID %CPU NI COMMAND  
      1207 64.2 0 sha1sum  
      1208 65.0 0 sha1sum  
      1209 63.9 0 sha1sum  
      1210 8.2 10 sha1sum  
      
    • La instancia con nice=10 usa menos CPU que las demás.
  8. Modificar la prioridad de un proceso con renice

    • Reducir el nivel nice del proceso con PID 1210 de 10 a 5:
      sudo renice -n 5 1210
      
    • Salida esperada:
      student 1210 (process ID) old priority 10, new priority 5
      
  9. Verificar el nuevo uso de CPU tras el ajuste de nice

    • Observar el impacto del cambio de prioridad:
      ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
      
    • Ejemplo de salida:
      PID %CPU NI COMMAND  
      1207 62.9 0 sha1sum  
      1208 63.2 0 sha1sum  
      1209 63.2 0 sha1sum  
      1210 10.9 5 sha1sum  
      
    • La instancia con nice=5 ahora usa más CPU que antes.
  10. Cerrar los procesos en ejecución

    • Detener todos los procesos sha1sum:
      pkill sha1sum
      
  11. Salir de servera y volver al bastion

    • Salir de la sesión remota:
      exit
      

Resultados Esperados

  • Los participantes podrán seleccionar y activar perfiles tuned adecuados para su entorno.
  • Se comprenderá cómo la prioridad de procesos influye en la asignación de recursos de CPU.
  • Se ajustarán valores nice de procesos para mejorar la ejecución de tareas críticas.
  • Se analizarán métricas de rendimiento para evaluar la efectividad de los ajustes aplicados.
  • Se optimizará la configuración del sistema para lograr un equilibrio entre rendimiento y estabilidad.