Usando un Intel N5100 (arquitectura Tremont) darle caña al reloj suele chocar con las barreras de siempre: el límite térmico (thermal throttling, en mi caso sin ventilador) y la reducida capacidad de las memorias intermedia integradas en el chip.
Parece lento en ocasiones, pero no es porque la CPU no corra con ciclos de cómputo, es lo típico de una latencia producto de una gestión de memoria ineficiente. Linux y la interacción con el caché L3 resulta determinante.
El cuello de botella de la caché L3
En cualquier procesador moderno, la latencia de acceso escala exponencialmente a medida que nos alejamos del núcleo: L1 y L2 caché, unos pocos nanosegundos; sumamos L3 con unos pocos nanosegundos más, 20 o 30 ns; añadimos tiempo de la RAM, entre 60 y 100 ns, más los que sigan del proceso.
En chips de bajo consumo, la Caché L3 actúa como el buffer crítico que absorbe el impacto de las peticiones antes de penalizar al bus de memoria principal. Sin embargo, su tamaño es sumamente pequeño (frecuentemente de apenas 4MB compartidos entre cuatro núcleos). Cada vez que ocurre un L3 Cache Miss (el dato requerido no está en la L3), la CPU debe detener la ejecución de la tubería (pipeline stall) durante decenas de ciclos de reloj esperando a que el controlador de memoria traiga la línea desde la RAM física.
THP en modo always y la compactación de memoria
El kernel de Linux integra una característica denominada Transparent Huge Pages (THP). Su objetivo teórico es optimizar el rendimiento reemplazando las páginas tradicionales de memoria virtual de 4KB por páginas contiguas de 2MB. Al usar páginas de 2MB, se reduce la cantidad de entradas necesarias en el TLB (Translation Lookaside Buffer), el buffer de traducción de direcciones virtuales a físicas integrado en la propia CPU. Sin embargo, cuando THP está configurado en modo global always dentro de un sistema con poca Caché L3 y recursos limitados, se desencadena un efecto colateral severo:
- Memory Compaction (Compactación asíncrona): Para entregar una página contigua de 2MB, el kernel necesita encontrar un bloque de memoria física completamente sin fragmentar. Si no lo encuentra, invoca al demonio kcompactd para reordenar la RAM en tiempo real.
- Inundación de la Caché L3 (Cache Pollution): Mover y copiar bloques masivos de 2MB para consolidar páginas llena la reducida Caché L3 de datos de gestión administrativa del kernel, expulsando (evicting) los datos de las aplicaciones en ejecución.
- Pérdida de granularidad: Cargar bloques de 2MB para procesos que solo necesitan acceder a unos pocos kilobytes desperdicia espacio en la L3, aumentando drásticamente la tasa de fallos de caché (cache miss rate).












