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.