domingo, 27 de septiembre de 2026

MADVISE gestionando L3

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).

lunes, 21 de septiembre de 2026

ZSWAP da realmente vida a tu modesto miniPC

Si tienes un MiniPC por casa con 4 u 8 GB de RAM y le pides que lo dé todo, la solución clásica siempre ha sido usar la SWAP (el espacio de intercambio en disco). Pero seamos sinceros: hacer que un MiniPC lea y escriba memoria en un almacenamiento interno justo cuando va apurado es la receta perfecta para arrastrar el sistema.

Aquí es donde entra ZSWAP, y sólo precisas activarlo.

¿Qué demonios es ZSWAP?

ZSWAP es un módulo del kernel de Linux que coge los datos que el sistema quiere mandar a la SWAP en el disco, los comprime y los guarda en una porción de tu propia memoria RAM.

Como la CPU procesa la compresión a la velocidad de la luz en comparación con la velocidad de lectura/escritura de un disco SSD o NVMe (y ni hablemos de un eMMC), el rendimiento del MiniPC no cae en picado.

La configuración por defecto es la mejor

En Linux nos encanta tocar botones, cambiar algoritmos y modificar parámetros, pero te voy a ahorrar unas cuantas horas de pruebas: ZSWAP funciona mejor exactamente tal y como viene de fábrica.

Los desarrolladores del kernel no son tontos y los valores por defecto están afinados para ofrecer el equilibrio perfecto entre uso de CPU y ahorro de memoria.

Para activarlo en casi cualquier distribución moderna basada en Debian, basta con editar el grub:

  • Abre la terminal y edita la configuración del Grub con Mousepad:

sudo mousepad /etc/default/grub

  • Busca la línea GRUB_CMDLINE_LINUX_DEFAULT y añade zswap.enabled=1. Quedaría algo parecido a esto: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1"
  • Guarda, actualiza el grub con sudo update-grub y reinicia el sistema.

¡Y ya está! Sin tocar algoritmos raros, sin vender la moto.

¿Y qué pasa con la SWAP "de toda la vida"? (El tamaño importa)

Aquí viene la duda del millón: Si uso ZSWAP... ¿cuánta memoria SWAP en disco necesito en mi MiniPC?
En un equipo con 4 u 8 GB de RAM no necesitas partirte la cabeza creando particiones gigantescas de intercambio.

  • Para un MiniPC de 4 GB: Configura un archivo de SWAP en disco a 4 GB. ZSWAP se encargará de comprimir casi todo en la RAM. Si la cosa se pone verdaderamente crítica y supera el límite de ZSWAP, esos 4 GB en disco actuarán como red de seguridad para que el sistema no tire procesos al suelo (Out Of Memory Killer).
  • Para un MiniPC de 8 GB: Con 8 GB de SWAP en disco vale. De hecho, mi miniPC funciona así.

No obsesionarse con el valor de swappiness. Déjalo en el valor predeterminado del sistema (habitualmente 60). ZSWAP interceptará las páginas antes de que toquen el almacenamiento físico, por lo que el comportamiento del sistema será fluido sin necesidad de forzar nada.

¿Cómo saber si está activado?

Usando el siguiente comando nos dirá si está activado o no:

cat /sys/module/zswap/parameters/enabled

Si tienes un modesto MiniPC, no te compliques la vida compilando cosas ni ajustando parámetros finos. Activa ZSWAP por defecto, dale un pequeño colchón de SWAP en disco por si las moscas, y disfruta de un equipo mucho más ágil sin tener que aportar un solo euro en memoria RAM.

domingo, 13 de septiembre de 2026

Por la LIBERTAD


Bajo los pulsos de synthwave de Kalax (Through It All), las imágenes avanzan como un testamento visual de una era donde la vida pertenencia enteramente a quien la vivía. En los pasillos, las calles y los parques de esa época, se respira la genuina autonomía individual:

  • Un tiempo donde los hombres de Estado gobernaban las grandes cuestiones del destino común sin pretender adoctrinar ni tutelar la conducta íntima. La libertad personal no se negociaba ni se sometía a la supervisión moral del poder.
  • Las secuencias muestran una generación marcada por la autenticidad en los afectos, las miradas sin artificio y el romance vivo, lejos de la intromisión reglamentaria en el deseo o los sentimientos.
  • Frente a la sobriedad del entorno académico y social, emerge el desafío audaz y libre de quien decide su propio camino sin disculpas.


Un homenaje vibrante a los tiempos en que la política respetaba sus límites y la vida privada era un santuario inviolable de libertad, pasión e individuación.

domingo, 9 de agosto de 2026

Emotion knows no bounds

  

 ¿Qué sería del verano sin una banda sonora que nos haga soñar? 🎵✨
Hoy me hace muchísima ilusión compartir en mi blog un proyecto muy especial: el lanzamiento de un pequeño álbum musical en el que he fusionado la tecnología con el sentimiento más humano. El lema que ha guiado todo este viaje sonoro es claro:
"La emoción no conoce límites"
Este álbum tiene una particularidad que lo hace verdaderamente mágico: ha sido compuesto y producido utilizando Inteligencia Artificial. Pero la magia real no reside en un simple clic, sino en el lenguaje. He trabajado cada prompt, cada indicación y cada palabra de forma minuciosa; como un artesano, he esculpido las emociones a través de la narrativa para que la tecnología las transformara en melodías con alma.
He decidido compartir el resultado por aquí con un objetivo muy claro: quiero que este verano, los verdaderos amantes de la buena música tengan algo genuino, fresco y sorprendente que escuchar. Es la prueba de que cuando las palabras precisas se encuentran con la IA, el resultado puede erizar la piel.
Es una invitación sonora a detenernos, desconectar y dejar que cada melodía os acompañe en vuestros mejores momentos de descanso.
Os invito a darle al play y dejar que esta magia tecnológica y lingüística hable por sí sola. ¡Espero que lo disfrutéis! 🎧🌊
👇 Os dejo el enlace a continuación:
https://musicgpt.com/playlist/913e6b46-7e56-42c8-b74d-11fa52be1a06?shid=mj65gy 

martes, 28 de julio de 2026

Control de la GPU de un Intel N5100 con LACT

 No esperaba que una IA como MusicGPT se "adueñara" de la GPU (Graphics Processing Unit) llevándola al límite durante largo tiempo. En mi miniPC la CPU, la GPU y la RAM están integradas en un único chip con disipación pasiva, y cuando se aprieta, esa pastilla se cuece y el miniPC se vuelve menos fluido. Probé bajando la frecuencia de trabajo del microprocesador, pero no parecía tener apreciable incidencia en la temperatura, que seguía rondando los 85ºC, y como era de esperar, la realimentación negativo empezaba a delatarse.


 Lo ideal sería poder reducir la frecuencia dela GPU para bajar la temperatura del chip, ya que, como se aprecia en la imagen anterior, la GPU siempre está a tope. 

Investigando el tema, la mejor solución que probé fue el uso de una aplicación llamada LACT (Linux GPU Control Application), que suele usarse para overclocking de tarjetas gráficas como AMD, NVIDIA e Intel. 

Para instalarlo desde Debian 13 KDE Plasma uso Discover, al que le añadí el repositorio de Flatpak; también podemos bajarlo desde la página web de Github o de Flatpak.


 Desde la web de Flathub:


 Después de instalada, abrimos LACT desde el Menú de inicio:

Podemos probar previamente como funcionan los ajustes sin hacerlos permanentes. Para ello tenemos que desactivar en la primera pantalla Autostart service at boot.


 Al continuar nos pide dos veces la autenticación:

La primera:

Y la segunda:

 

Después de esto el servicio ha sido iniciado, y en el mismo mensaje nos indican que debemos arrancar de nuevo LACT (The service has been started. Please, run LACT again)

jueves, 21 de mayo de 2026

El 555 como comparador

  

 Este dispositivo controla de forma automática el encendido y el apagado de las luces artificiales en función del umbral de luz solar. 

Usa un circuito integrado 555, un fototransistor, un transistor PMOS, un relé, un LED de color verde y un par de resistencias.

El circuito integrado lo usamos como comparador, y los umbrales están establecidos a través del circuito resistivo que contiene internamente. Se activa al caer el voltaje en la patilla 2 a un tercio de +Vcc, y se desactiva a dos tercios del valor de +Vcc en la patilla 6. El ciclo de histéresis está establecido dentro del marco de esta ventana de disparo, evitando cualquier atisbo de duda en la conmutación. 


Aunque el 555 está activado en este circuito cuando sobre el fotodiodo hay poca luz, la acción inversora del PMOS mantiene desactivado el relé; es decir, por la misma lógica, el relé se activa cuando sobre el fotodiodo incide plenamente la luz. El transistor PMOS es un amplificador de corriente controlado por tensión, activándose cuando la tensión en su puerta (Gate) es negativa con respecto a su fuente (Source).

sábado, 18 de abril de 2026

La agonía de vivir

“La agonía de vivir” no se presenta aquí como un lamento, sino como un territorio de exploración íntima. Una geografía emocional donde la introspección habita casi de un modo confesional, producto del universo de algunos artistas de jazz que parecen pensarse cada nota que dan antes de que exista.
Su lenguaje dialoga con la tradición de la música clásica europea —en la armonía, en el uso del silencio, en la arquitectura del sonido— y, al mismo tiempo, se funde con la libertad expresiva del jazz. El resultado es un universo sonoro delicado, creativo y profundamente humano, donde la fragilidad no se oculta, sino que se transforma en belleza.
Escuchar esta propuesta es aceptar que vivir también implica detenerse, escucharse a uno mismo y habitar, aunque sea por un instante, esa sutil tensión entre la melancolía y la creación.

La agonía de vivir