Mostrando entradas con la etiqueta Debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta Debian. Mostrar todas las entradas

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.

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)

viernes, 17 de abril de 2026

Sencilla protección desde nuestro router

Móviles, consolas, tabletas y televisores inteligentes forman parte de lo cotidiano en nuestro hogar. No sólo los adultos se conectan, y la seguridad y el control de contenidos en nuestra red doméstica pesa más cada día. Mejorar la protección de todos los dispositivos disponibles en el hogar se pueden hacer de forma muy sencilla configurando los servidores DNS del router.

He probado el Cloudflare Family DNS (Sistema de Nombres de Dominio), que está basado en el uso de las direcciones 1.1.1.3 y 1.0.0.3

Un servidor DNS se encarga de traducir las direcciones web en direcciones ip que son las que los dispositivos realmente entienden. Siempre tiene que haber un servidor DNS, que siempre ofrece el proveedor de Internet, pero puede ser sustituido por otros más rápidos y seguros. Así, Cloudflare Family DNS  es una versión especial del DNS público de Cloudflare que ofrece las siguientes ventajas:

  • Bloquea sitios de malware
  • Filtra contenido adulto
  • Mantiene una alta velocidad de respuesta
  • No necesita registro ni aplicaciones adicionales

Las direcciones que se utilizan son:

  • DNS primario: 1.1.1.3
  • DNS secundario: 1.0.0.3

Al configurarlas en el router, todos los dispositivos de casa se benefician automáticamente. 

 En mi caso, que así es en la mayoría de los router, para entrar en el router tecleamos en la barra de direcciones del navegador la siguiente ip: 192.168.1.1

Después de escribir el usuario y la contraseña, buscamos la opción LAN Devices, y hacemos clic en LAN setting:

En la pestaña IPV4, hacemos clic en DHCP Server:


 Y es aquí donde añadimos las ip de los DNS primario y secundario:


Procurar tomar nota de los DNS anteriores, los del proveedor, por si queréis volver a usar los que tenéis por defecto.

domingo, 12 de abril de 2026

Journal se hace pesado

 Journal es el sistema de registro de Debian, la "caja negra" del sistema. Es el mecanismo que guarda la información del sistema en unos "logs" o archivos donde se almacena realmente la información. Todo lo que importa se registra, y si algo falla se pueden consultar los logs para ver qué ocurre. Por ejemplo:

  • Un servicio o proceso en segundo plano que falla, queda registrado.
  • Intento de login por SSH (intento de conexión remota), queda registrado.
  • Error de sistema, queda registrado.

Esta actividad de registro, no sólo acumula archivos, sino que en el proceso de registro puede enlentecer el ordenador. En mi caso, en un miniPC con Debian 13, lo percibí, y debido a ello modifiqué su comportamiento para que su trabajo en segundo plano no comprometa la actividad principal del ordenador.

Los logs están en el Journal (binario), y para verlos desde el Terminal ejecutamos el siguiente comando:

sudo journalctl

Avance de página, AV Pág 

Para salir, Ctrl+c 

Si queremos ver sólo errores, aplicamos lo siguiente:

sudo journalctl -p err

 


 Hay mucha literatura para "afinar" la actividad de Journal en Internet, pero yo os recomiendo lo más fácil, y para mí lo que mejor resolvió mi problema. Os recomiendo, en suma, limitar los logs automáticamente modificando el siguiente archivo:

/etc/systemd/journald.conf 

 (Yo abrí Thunar como administrador, y edité con Mousepad)

 

Modifiqué las siguientes líneas:

storage=auto

SystemMaxUse=50M

Guardar

Reiniciar

Para borrar los journals existentes, ejecutamos lo siguiente:

sudo rm -rf /var/log/journal

Después, reiniciamos, y podemos observar el espacio que ocupan con el siguiente comando:

sudo journalctl --disk-usage


sábado, 14 de marzo de 2026

A vueltas con Wine: could not load kernel32.dll, status c0000135

Al intentar ejecutar una aplicación de Windows con Wine en mi Debian "Trixie" puede apareció el siguiente error:

could not load kernel32.dll, status c0000135

Este mensaje indica que Wine, esa capa de compatibilidad que permite ejecutar aplicaciones de Windows en Unix, Linux, macOS o FreeBSD, no puede cargar kernel32.dll, una de las bibliotecas fundamentales del sistema operativo Windows. En la práctica, esto significa que el entorno de Windows que Wine simula no está inicializado correctamente o se encuentra dañado.

En Windows, kernel32.dll es una biblioteca central que proporciona funciones básicas del sistema, y cuando Wine no puede cargar esta biblioteca, la ejecución del programa se detiene inmediatamente.

La causa más común es que el prefix de Wine (carpeta donde se ejecuta una instalación simulada de Windows) esté corrupto o incompleto.
Wine utiliza lo que se denomina un prefix (WINEPREFIX), que es una carpeta que contiene una estructura que simula una instalación de Windows. Dentro de ese directorio se encuentran el registro de Windows, las unidades virtuales y las bibliotecas necesarias para ejecutar aplicaciones.

El prefix por defecto se encuentra en:

~/.wine

Si este directorio se corrompe (por ejemplo, tras una actualización, una instalación fallida o una interrupción del sistema), Wine puede perder acceso a archivos esenciales como kernel32.dll.

La forma más sencilla de solucionar el problema consiste en regenerar el prefix de Wine.
En lugar de eliminarlo directamente, es recomendable renombrarlo para poder recuperarlo si fuera necesario.

mv -f ~/.wine ~/.wine.old

Este comando cambia el nombre del directorio ~/.wine a ~/.wine.old.



La próxima vez que se ejecute Wine, se creará automáticamente un nuevo prefix limpio. Para forzar su creación se puede ejecutar:

winecfg

Este comando inicializa el nuevo entorno de Wine y recrea la estructura de directorios necesaria.
 
 
Si todo funciona correctamente con el nuevo entorno, el directorio antiguo (~/.wine.old) puede eliminarse posteriormente.
El error “could not load kernel32.dll” suele estar relacionado con un prefix dañado. Renombrar el directorio ~/.wine y permitir que Wine genere uno nuevo suele resolver el problema en la mayoría de los casos y permite volver a ejecutar aplicaciones de Windows sin necesidad de reinstalar Wine.
 

domingo, 8 de marzo de 2026

LibreThinker es la IA de Writer en LibreOffice

LibreThinker es una extensión que aporta funciones de inteligencia artificial dentro del procesador de textos Writer. Ayuda a escribir, a mejorar y a corregir textos sin salir del documento que estamos editando. LibreThinker puede revisar gramática, ortografía y estilo; reescribe textos para hacerlos más claros o darle el toque profesional o personal que queramos. Además, puede generar resúmenes de vastos textos, puede generar ideas cuando ese informe o artículo parece imposible de iniciarse o puedes darle un mayor recorrido a lo que ya has comenzado a redactar.

LibreThinker trabaja conectándose a distintos modelos de intelgencia artificial, esos sistemas entrenados con muchos datos para reconocer y aprender patrones y realizar luego tareas de forma automática. Puede utilizar también servicios externos o modelos compatibles con APIs (especie de puente entre dos aplicaciones que permite que se comuniquen fácilmente entre sí) de IA.

Para instalarla, precisamos descargar la extensión LibreThinker.oxt desde el siguiente enlace: https://extensions.libreoffice.org/en/extensions/show/99471

Nueva versión desde GitHub: https://github.com/mihailthebuilder/librethinker-extension/releases/tag/0.2.8 


 Luego, la descargamos en la carpeta que queramos, por ejemplo, en Descargas:

Abrimos Writer, y añadimos la extensión desde el menú Herramientas -> Extensiones

Picamos en Añadir, seleccionamos LibreThinker.oxt, Abrir, y así de simple ya dispones de nuestra extensión en Writer:

 La IA estará disponible en un nuevo panel lateral, y en el ejemplo de la imagen podemos apreciar que resumí un texto del Quijote; los resúmenes de texto los deja al final del mismo, y aconsejo, para que no aparezca justo al final del texto original, que dejen un par de líneas en blanco para reconocerlo mejor:  


Aquí les pongo un texto generado por la IA como disculpa por no haber enviado un e-mail cuando debería haberlo hecho antes:

Y un pequeño cuento para dormir a un niño, también: 


Es muy rápido y fácil instalar LibreThinker en LibreOffice, y después de reiniciar Writer podrán disfrutar de una herramienta muy potente que nos permitirá escribir, corregir y mejorar todo tipo de documentos de textos.


viernes, 6 de febrero de 2026

Internet, los menores, la censura y yo


Imagínense que un carismático líder pretende proteger a nuestros menores de los males de la red de redes. Un personaje siniestro, mentiroso, cuyo único propósito político es el de perpetuarse en su poltrona, escondiendo detrás de su velada ambición el aprovechar la coyuntura para taparle la boca a todo quisqui que tenga la osadía de esbozar alguna inoportuna idea que pueda comprometer sus ambiciones políticas. ¿Confiarían en él y en las espantosas leyes o decretos que podría esbozar?

Además de la educación, proteger a nuestros menores es tan sencillo como disponer de un escritorio activo para menores en los dispositivos móviles, y que las compañías lo desactiven cuando el usuario realice el contrato y muestre con su DNI que es mayor de edad. 
En Galicia, el alumnado va a la escuela con un netbook que dispone de una aplicación que garantiza que los estudiantes sólo pueden usar sus dispositivos para estudiar, y no tienen acceso a las redes sociales, ni a Facebook ni a Tik Tok ni a WhatsApp, ni a todas esas distracciones que en la escuela no se precisan. ¿Por qué una espantosa ley si técnicamente es posible resolver el problema sin ella?

 


martes, 27 de enero de 2026

El cortafuegos silencioso (Stealth)

Por qué “Entrante: ignorar / Saliente: permitir” es una buena idea

En sistemas de escritorio GNU/Linux, especialmente en entornos como Debian con KDE Plasma, el cortafuegos no suele verse como algo necesario, y sí como algo desmesuradamente engorroso. Sin embargo, una sutil configuración puede aportar una sigilosa defensa sin complicarle la vida al usuario.

Antes de nada, instalamos UFW (Uncomplicated Firewall) usando Synaptic o la línea de comandos:


 
En la línea de comandos usaremos lo siguiente: 

 sudo apt install ufw

Plasma Firewall proporciona una forma de configurar gráficamente un servicio de firewall. Normalmente viene instalado por defecto en las Preferencias del sistema, pero si no es así, lo instalamos.

Una de esas configuraciones es:

  • Política entrante: ignorar
  • Política saliente: permitir 

 

 

 ¿Qué significa realmente “ignorar” lo entrante?

Configurar el tráfico entrante como ignorado implica que cualquier conexión no solicitada desde el exterior se descarta en silencio. El sistema no responde con mensajes de rechazo ni confirma la existencia de puertos abiertos o cerrados.

Desde fuera, el equipo:

  • No “contesta”
  • No da pistas
  • Aparece como filtrado o incluso inexistente

Este comportamiento reduce el ruido de red y dificulta tareas habituales como el escaneo de puertos o el fingerprinting (Intentar identificar un sistema observando cómo responde en la red y qué información deja ver) del sistema.

Un enfoque discreto, pero eficaz

A diferencia de políticas más explícitas como deny o reject (bloquean el tráfico entrante y saliente), el modo ignore apuesta por la discreción. No es una defensa agresiva, sino pasiva: el sistema simplemente no reacciona.

Para un equipo de escritorio que:

  • No ofrece servicios públicos
  • Se conecta a redes domésticas o de confianza
  • Inicia conexiones, pero no espera recibirlas

…este enfoque es más que suficiente y, en muchos casos, preferible. 

Saliente permitido: que el sistema fluya

Permitir todo el tráfico saliente garantiza que:

  • Navegadores
  • Actualizaciones del sistema
  • Aplicaciones de escritorio
  • Servicios como DNS (nombres de dominio), NTP (protocolo de tiempo para sincronizar la red) o gestores de paquetes

funcionen sin restricciones ni configuraciones adicionales.

Además, UFW 
(Uncomplicated Firewall) es un cortafuegos stateful (Capacidad del cortafuegos para reconocer conexiones iniciadas por el propio equipo y permitir solo sus respuestas), lo que significa que las respuestas a conexiones iniciadas desde el propio equipo sí están permitidas automáticamente, incluso con el tráfico entrante ignorado.

Seguridad sin fricción

Una de las grandes virtudes de esta configuración es que no interfiere con el uso normal del sistema:

  • No rompe el escritorio
  • No requiere mantenimiento constante
  • No obliga a abrir puertos “por si acaso”


Es una defensa silenciosa que cumple el principio de mínimo privilegio aplicado a la red.  

¿Es suficiente?

Para un escritorio personal, portátil o mini-PC sin servicios expuestos, sí.
No pretende sustituir otras medidas de seguridad, pero añade una capa adicional muy barata en términos de complejidad y coste cognitivo.

Si en el futuro se necesitan servicios entrantes (SSH, KDE Connect, impresoras en red), siempre es posible añadir reglas específicas sin cambiar la política general.


Conclusión

Usar UFW con entrante ignorado y saliente permitido es una forma elegante de aplicar seguridad práctica en Linux: silenciosa, sencilla y efectiva.

No es hardening 
(
hacer un sistema más seguro reduciendo lo que no necesita estar activo o accesible) extremo, pero sí una defensa sutil que encaja perfectamente con el espíritu de un escritorio moderno y bien configurado. 

viernes, 26 de diciembre de 2025

Límite térmico para un mini PC con Trixie

 Si sois unos "tiquismiquis" como yo, y no soportáis el susurro del ventilador del mini PC cuando más inspirados estáis, aquí os brindo una solución con Debian 13 KDE o "Trixie".

A mi mini PC, con un Intel N5100, le retiré el ventilador, y le puse un disipador de calor en el hueco que dejó tan osado despropósito; pero no basta, es preciso limitar la frecuencia máxima de trabajo del mini PC para que no supere los 80ºC en el peor de los casos.

¿Cómo se puede hacer con "Trixie"?

Con un servicio personalizado de systemd para que cuando iniciemos el sistema la frecuencia máxima quede configurada al valor que deseamos.

 Debemos de instalar previamente el paquete linux-cpupower, y si tenemos instalado Synaptic lo podemos instalar amigablemente:

Luego, creamos en /etc/systemd/system/ el archivo de servicio set-cpufreq.service .


Luego, le añadimos el siguiente contenido para que se establezca la frecuencia máxima en 2.20 GHz al inicio:

[Unit]
Description=Set CPU Frequency Limit to 2.20GHz
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower frequency-set --max 2.20GHz
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

GUARDAR

 ExecStart: Especifica el comando que ejecutará systemd para fijar la frecuencia máxima.

RemainAfterExit=true: Hace que el servicio siga activo después de ejecutar el comando.

 
 Usando un Terminal, recargamos systemd para que reconozca el nuevo servicio:

sudo systemctl daemon-reload

Luego, habilitamos y arrancamos el nuevo servicio:

sudo systemctl enable set-cpufreq.service
sudo systemctl start set-cpufreq.service

Verificamos la frecuencia máxima con el siguiente comando:

cpupower frequency-info


 Política actual: la frecuencia debe estar entre 800 MHz y 2,20 GHz. El controlador de ahorro de energía puede decidir qué velocidad utilizar dentro de este rango.


sábado, 20 de diciembre de 2025

Atinar mq-deadline para un mini PC con SSD

 Reducir la latencia y evitar el colapso del sistema cuando se ejecutan las operaciones de lectura y escritura hacia el SSD es el cometido de mq-deadline (Multi-Queue deadline. Multi colas con tiempo máximo). El planificador por defecto de las operaciones de lectura y escritura hacia el SSD en los kernel modernos es mq-deadline, que usa blk-mq (Multi-Queue Block Layer), la moderna arquitectura del kernel que aprovecha las CPUs multinúcleo y dispositivos rápidos como SSD y NVMe.

mq-deadline se basa en tres principios simples:

  • Separación de lecturas y escrituras. Las lecturas tienen prioridad, ya que bloquean procesos y afectan directamente a la fluidez del sistema.
  • Deadlines por petición. Cada operación tiene un tiempo máximo de espera. Si se alcanza ese límite, la petición se ejecuta inmediatamente, aunque no sea la más eficiente de agrupar.
  • Reordenamiento moderado. Agrupa peticiones cercanas cuando es posible, pero sin la complejidad de schedulers (planificadores) antiguos pensados para discos mecánicos.

El resultado es un comportamiento predecible, estable y de baja latencia, ideal para hardware moderno. 

 ¿Por qué mq-deadline es ideal para mini PC?

En mini PC con SSD o NVMe:

  • El tiempo de acceso es muy bajo
  • La prioridad es la latencia estable
  • El consumo de CPU debe ser mínimo

mq-deadline cumple perfectamente estos objetivos:

  • Excelente rendimiento en escritorio
  • Buena respuesta bajo carga
  • Comportamiento robusto en multitarea
  • Muy bajo overhead (recursos redundantes para ejecutar una misma cosa)

Por eso es el scheduler por defecto en la mayoría de distribuciones.

 En un Terminal comprobamos si está activo mq-deadline por defecto ejecutando:

 cat /sys/block/sda/queue/scheduler

 

Si devuelve  none [mq-deadline] es que está activo. Si el SSD no está en sda, en el comando anterior ponerle el correspondiente.

Ahora, afinamos esos parámetros que idealizarán la ejecución de mq-deadline en nuestro mini PC:

Ejecutamos en un Terminal con permisos administrativos (root) los siguientes comandos:

echo 0 | tee /sys/block/sda/queue/rotational
echo 256 | tee /sys/block/sda/queue/nr_requests 

(Si usamos sudo, sería asi:

 echo 0 | sudo tee /sys/block/sda/queue/rotational
echo 256 | sudo tee /sys/block/sda/queue/nr_requests )

Reiniciamos el mini PC.
 

Aquí podemos ver el cambio realizado:

Comprobamos con el siguiente comando que está cargado:

ls /sys/block/sda/queue/iosched/

Si aparecen los siguientes archivos después de ejecutar el comando, todo OK.

fifo_batch, read_expire, write_expire, writes_starved


 Con el siguiente comando podemos ver cómo trabaja y cambian los valores de las variables cada vez que lo ejecutamos:

cat /sys/block/sda/stat


En una red social que uso, cuando navegaba --debido a la lentitud de la red WIFI-- tenía un lag que me ponía nervioso, y aunque también me enfurecía por lo que dicen en los comentarios de estas peculiares redes, lo cierto es que en esto y en otros menesteres se nota mejoría evidente.

El Mini con N5100, sin ventilar y ruido alguno, mola con estas pequeñas cosas. 

 

viernes, 19 de diciembre de 2025

¿CUBIC o BBR+FQ? En mi caso, sin duda, BBR+FQ

 TCP Cubic es uno de los algoritmos de control de congestión de red, y suele ser el predeterminado en Linux, Unix y Windows. Funciona mejor en redes simples, sin WIFI, sin muchos flujos y saturaciones. Suele generar ping largos, lag y microcortes, porque empieza bien, apura locamente hasta que satura los buffers y empieza a perder paquetes, entendiendo así que debe reducir su velocidad, y repite el ciclo. 

A una red WIFI como la mía le va algo más  "inteligente", algo que, de antemano, mida el ancho de banda real, el RTT (Round Trip Delay o tiempo de ida y vuelta en redes sin perder paquetes), y ajuste el flujo de datos a una velocidad de crucero sin perder paquete alguno. Este protocolo es BBR (Botteneck Bandwidth and RTT) + FQ (Fair Queueing)  se ajusta mejor al perfil de las nuevas redes, y el otro, el TCP Cubic está más experimentado, pero nació en otro tiempo.

En todo tráfico tiene que haber un policía, ese es FQ (Fair Queuing), y depende del Kernel, diviendo el flujo en varias colas, reparte justamente la conexión, evita que aparezca el chupón de datos, como la pelota en el fútbol, y reduce el bufferbloat (colas demasiado largas, llenas de ingentes cantidades de datos). Buen poli.  

Hoy, con la IA, cualquiera puede ampliar este tema e investigar sobre ello lo que quiera, pero la experiencia propia todavía se requiere cuando realmente queremos saber hasta qué punto merece la pena cambiar. 

Todo esto es muy interesante, pero la verdad se vive, y no se enseña (cita de Hermann Hesse), por eso me propuse compararlos en la práctica en un miniPC como el mío. 

En un miniPC usado como ordenador personal creamos en /etc/sysctl.d/ el archivo 99-bbr.conf

Yo usé Thunar lanzado desde un terminal con permisos administrativos (root), y luego de forma gráfica cree el archivo en la carpeta correspondiente:

 

A ese archivo le añadimos el siguiente contenido abriendo el archivo, por ejemplo, con Mousepad:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr 

 

Guardar y reiniciar.

 Podemos comprobar si está activado en nuestro sistema usando el siguiente comando en un terminal:

sysctl net.ipv4.tcp_congestion_control 

 


Tendrá que devolvernos bbr 

Usando este otro comando, podemos verificar si el policía se persona en la red:

 tc qdisc show

 

Debe de mostrar algo así:

qdisc fq 0: dev enp1s0 root refcnt 2 limit 10000p flow_limit 100p buckets 1024 orphan_mask 1023 quantum 3028b initial_quantum 15140b low_rate_threshold 550Kbit refill_delay 40ms timer_slack 10us horizon 10s horizon_drop

No colgaría esta entrada  si no tuviera la convicción de que  mereció la pena. En una red precaria como la mía mi miniPC parece agradecerlo, mostrando una agilidad en el "flow" de la WIFI que antes no percibía.


 Ya me contarán. Gracias.