Gestión y Optimización de la Frecuencia del CPU en Linux

El kernel Linux implementa cinco estrategias principales para la gestión dinámica de frecuencia:

  • rendimiento - Opera siempre a la frecuencia máxima, priorizando el desempeño sobre el consumo energético;
  • interactivo - Inicia en frecuencia máxima y reduce gradualmente según la carga del procesador;
  • ahoro_energia - Modo de bajo consumo, mantiene frecuencia mínima constente afectando el rendimiento;
  • espacio_usuario - Permite ajuste manual de frecuencias desde el espacio de usuario;
  • bajo_demanda - Evalúa periódicamente la carga del sistema y ajusta la frecuencia dinámicamente.

Configuración del Sistema

Parámetro SERVIDOR_PRINCIPAL
Estrategia de frecuencia rendimiento
Modelo de CPU Intel® Xeon® Gold 6248 @ 2.50GHz
Rango de frecuencia 1000 MHz - 3.90 GHz
Memoria RAM 256G
Interfaz de red 10000Mb/s

Verificación de Frecuencia Máxima Actual

Antes del ajuste, la frecuencia máxima del sistema es de 3.9GHz:

[root@servidor ~]# para nucleo in /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq; do cat "$nucleo"; done | sort -u
3900000

Modificación de la Frecuencia Máxima

Ajustamos la frecuencia máxima a 2.9GHz:

[root@servidor ~]# echo 2900000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
[root@servidor ~]# for cpu in /sys/devices/system/cpu/cpu[1-9]*; do echo 2900000 > "$cpu/cpufreq/scaling_max_freq"; done

Verificación posterior al cambio:

[root@servidor ~]# awk '{print $1}' /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq | uniq -c
    40 2900000

Consultar Información del Procesador

Utilizamos el comando lscpu para obtener detalles completos:

[root@servidor ~]$ lscpu
Arquitectura:                    x86_64
Modo(s) de operación de la CPU:  32-bit, 64-bit
Orden de bytes:                  Little Endian
CPU(s):                          160
Lista de CPU(s) en línea:        0-159
Hilos por núcleo:                2
Núcleos por socket:              20
Socket(s):                       4
Nodo(s) NUMA:                    4
ID de fabricante:                GenuineIntel
Familia de CPU:                  6
Modelo:                          85
Nombre del modelo:               Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
Stepping:                        7
CPU MHz:                         1530.151
CPU MHz máx:                     3900.0000
CPU MHz mín:                     1000.0000
BogoMIPS:                        5000.00
Virtualización:                  VT-x
Caché L1d:                       32K
Caché L1i:                       32K
Caché L2:                        1024K
Caché L3:                        28160K
Nodo NUMA 0 CPU(s):              0-19,80-99
Nodo NUMA 1 CPU(s):              20-39,100-119
Nodo NUMA 2 CPU(s):              40-59,120-139
Nodo NUMA 3 CPU(s):              60-79,140-159

Alternativamente, podemos usar cpupower frequency-info:

[root@servidor ~]$ cpupower frequency-info
analizando CPU 0:
  controlador: intel_pstate
  CPUs que funcionan a la misma frecuencia de hardware: 0
  CPUs que necesitan coordinación por software: 0
  latencia máxima de transición: No se puede determinar o no está soportado
  límites de hardware: 1000 MHz - 3.90 GHz
  gobernadores disponibles: rendimiento ahorro_energia
  política actual: la frecuencia debe estar entre 1000 MHz y 3.90 GHz
                  El gobernador "rendimiento" puede decidir qué velocidad usar
                  dentro de este rango
  frecuencia actual del CPU: 1.37 GHz (confirmada por llamada al kernel)
  soporte de estado boost:
    Soportado: sí
    Activo: sí

Información de Memoria del Sistema

[root@servidor ~]# free -h
              total        usado        libre     compartido    buff/cache    disponible
Mem:           251Gi        80Gi        91Gi        3.0Gi        79Gi         166Gi
Swap:          63Gi         4.0Gi       59Gi

Verificar Estrategia de Gobernador Actual

[root@servidor ~]# grep . /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | head -1
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:rendimiento

Explorar Detalles de Frecuencia por Núcleo

Navegamos al directorio específico del núcleo:

[root@servidor ~]# cd /sys/devices/system/cpu/cpu0/cpufreq
[root@servidor cpufreq]# ls -la

Descripción de archivos clave:

  • cpuinfo_cur_freq - Frecuencia actual leída directamente del registro del CPU;
  • cpuinfo_max_freq - Frecuencia máxima soportada por el procesador (kHz);
  • cpuinfo_min_freq - Frecuencia mínima soportada por el procesador (kHz);
  • cpuinfo_transition_latency - Tiempo necesario para cambiar de frecuencia (ns);
  • scaling_available_governors - Estrategias disponibles en el kernel;
  • scaling_cur_freq - Frecuencia actual cacheada por el módulo cpufreq;
  • scaling_driver - Driver actual de control de frecuencia;
  • scaling_governor - Estrategia activa de gestión de frecuencia;
  • scaling_max_freq - Límite superior ajustable por el gobernador;
  • scaling_min_freq - Límite inferior ajustable por el gobernador.

Etiquetas: linux cpufreq gestion-energia rendimiento optimización

Publicado el 9-9 08:31