{"id":21507,"date":"2026-09-18T08:32:17","date_gmt":"2026-09-18T06:32:17","guid":{"rendered":"https:\/\/webhosting.de\/tickless-mode-linux-kernel-rhythmus\/"},"modified":"2026-09-18T08:32:17","modified_gmt":"2026-09-18T06:32:17","slug":"modo-sin-reloj-nucleo-de-linux-ritmo","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/tickless-mode-linux-kernel-rhythmus\/","title":{"rendered":"Explicaci\u00f3n del modo \u00abtickless\u00bb del programador del n\u00facleo: ventajas, riesgos y ajuste"},"content":{"rendered":"<p>Voy a explicar el <strong>modo sin reloj<\/strong> del n\u00facleo de Linux de forma comprensible y muestro cu\u00e1ndo influye positivamente en el rendimiento, la latencia y el consumo energ\u00e9tico. Para ello, expongo las ventajas claras, los posibles riesgos y los pasos concretos de optimizaci\u00f3n que utilizo y que he comprobado en la pr\u00e1ctica.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<p>Resumo lo m\u00e1s importante <strong>Temas principales<\/strong> resumido de forma concisa para que sepas de inmediato en qu\u00e9 debes fijarte. El programador de Linux y el \u00abtick\u00bb din\u00e1mico interact\u00faan directamente entre s\u00ed y determinan el comportamiento de tu <strong>CPUs<\/strong>. Dependiendo de la carga de trabajo, decido si basta con \u00abTickless Idle\u00bb o si utilizo \u00abFull Tickless\u00bb con n\u00facleos aislados. Para obtener resultados reproducibles, planifico cuidadosamente las CPU de mantenimiento, la afinidad de IRQ y las llamadas de retorno de RCU. Al final, lo que cuenta son los valores medidos de latencia, consumo energ\u00e9tico y rendimiento en tu <strong>Configurar<\/strong> demostrar de verdad.<\/p>\n<ul>\n  <li><strong>Ralent\u00ed sin tictac<\/strong>: menos tics al ralent\u00ed<\/li>\n  <li><strong>NO_HZ_FULL<\/strong>: n\u00facleos tranquilos y aislados<\/li>\n  <li><strong>Afinidad de IRQ<\/strong>: Agrupar las fuentes de interferencias<\/li>\n  <li><strong>Fijaci\u00f3n de la CPU<\/strong>: Asignar hilos de forma fija<\/li>\n  <li><strong>Valores medidos<\/strong>: Latencia, energ\u00eda, fluctuaci\u00f3n<\/li>\n<\/ul>\n<p>La lista muestra los factores que compruebo y combino en primer lugar. As\u00ed puedo identificar r\u00e1pidamente d\u00f3nde est\u00e1 el mayor <strong>Palanca<\/strong> depende de d\u00f3nde se encuentre y de hasta qu\u00e9 punto personalice el n\u00facleo.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/kernel-tickless-6359.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Qu\u00e9 supone en la pr\u00e1ctica el \u00abtick\u00bb del n\u00facleo<\/h2>\n\n<p>Un tick peri\u00f3dico activa en el n\u00facleo la medici\u00f3n del tiempo, la gesti\u00f3n de temporizadores y nuevas <strong>Programaci\u00f3n<\/strong>-Decisiones. Es sencillo, pero activa los n\u00facleos incluso cuando no hay ning\u00fan trabajo relevante pendiente. Con \u00abtickless\u00bb, el n\u00facleo planifica el siguiente despertar en funci\u00f3n de las necesidades y evita innecesarios <strong>Interrupciones<\/strong>. De este modo, las CPU permanecen m\u00e1s tiempo en estados C profundos y generan menos fluctuaciones en tareas en las que la latencia es fundamental. Utilizo este mecanismo para crear ventanas de ejecuci\u00f3n tranquilas para los subprocesos sensibles.<\/p>\n\n<h2>Variantes: Resumen de \u00abTickless Idle\u00bb y \u00abNO_HZ_FULL\u00bb<\/h2>\n\n<p><strong>Ralent\u00ed sin tictac<\/strong> (CONFIG_NO_HZ_IDLE) suprime el tick peri\u00f3dico en cuanto una CPU est\u00e1 inactiva. Esto reduce el consumo de energ\u00eda y la generaci\u00f3n de calor, ya que el procesador sale del modo de suspensi\u00f3n profunda con menos frecuencia. <strong>NO_HZ_FULL<\/strong> Esto va m\u00e1s all\u00e1 y reduce incluso los ticks en los n\u00facleos activos cuando solo se est\u00e1 ejecutando una tarea en ellos. Para ello, a\u00edslo estrictamente estos n\u00facleos y transfiero las tareas del sistema a CPU dedicadas a tareas de mantenimiento. Si se implementa un aislamiento adecuado, se consiguen n\u00facleos muy silenciosos y, por lo tanto, una mayor previsibilidad bajo carga.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/tickless_mode_vorteile_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tabla comparativa y escenarios de aplicaci\u00f3n<\/h2>\n\n<p>El siguiente resumen me ayuda a encontrar el m\u00e1s adecuado <strong>Modo<\/strong> elegir en funci\u00f3n del objetivo y preparar correctamente el entorno necesario. Primero tengo en cuenta las caracter\u00edsticas de la carga de trabajo, luego los objetivos energ\u00e9ticos y, por \u00faltimo, la tolerancia al jitter. Por experiencia, un aislamiento claro de la CPU resulta especialmente \u00fatil en el trading, la HPC y en entornos con muy baja latencia <strong>Red<\/strong>-Stacks. En cambio, en un centro de datos con una carga de trabajo variable, el modo \u00abTickless Idle\u00bb suele ofrecer el ahorro m\u00e1s r\u00e1pido. El modo \u00abFull Tickless\u00bb lo reservo para hosts estrictamente controlados, en los que separo de forma fiable el trabajo del sistema.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Modo<\/th>\n      <th>Cu\u00e1ndo est\u00e1 activo<\/th>\n      <th>Ventaja<\/th>\n      <th>Riesgo<\/th>\n      <th>Adecuado para<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Tick peri\u00f3dico<\/td>\n      <td>Siempre, frecuencia card\u00edaca constante<\/td>\n      <td>Simple <strong>Administraci\u00f3n<\/strong><\/td>\n      <td>M\u00e1s fluctuaciones y reactivaciones<\/td>\n      <td>Servidores generales<\/td>\n    <\/tr>\n    <tr>\n      <td>Ralent\u00ed sin tictac (NO_HZ_IDLE)<\/td>\n      <td>Solo en ralent\u00ed<\/td>\n      <td>Menos energ\u00eda, m\u00e1s fresco <strong>CPUs<\/strong><\/td>\n      <td>Mejora limitada de la latencia<\/td>\n      <td>Hosts de m\u00e1quinas virtuales, web, mixtos<\/td>\n    <\/tr>\n    <tr>\n      <td>Sin tics (NO_HZ_FULL)<\/td>\n      <td>Incluso con cargas de una sola tarea<\/td>\n      <td>Zonas muy tranquilas, pocas <strong>Jitter<\/strong><\/td>\n      <td>Es necesario un aislamiento minucioso<\/td>\n      <td>HPC, trading, casi en tiempo real<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Cu\u00e1ndo destaca el modo \u00abtickless\u00bb<\/h2>\n\n<p>Activo \u00abFull Tickless\u00bb en los n\u00facleos aislados cuando una aplicaci\u00f3n es extremadamente <strong>Baja latencia<\/strong> debe reaccionar. Entre ellos se incluyen la coincidencia de \u00f3rdenes, el procesamiento de paquetes con cola \u00fanica o la localizaci\u00f3n NUMA estrecha en c\u00f3digos cient\u00edficos. Cuando se persiguen objetivos energ\u00e9ticos en hosts mixtos, a menudo basta con el modo \u00abTickless Idle\u00bb para obtener una mejora apreciable <strong>Ahorro<\/strong>. Quien observe muchas fases de reposo se beneficiar\u00e1 enormemente, ya que los estados C se abandonan con menos frecuencia debido a los ticks. No dudes en leer mi gu\u00eda sobre <a href=\"https:\/\/webhosting.de\/es\/servidor-kernel-sin-cosquillas-eficiencia-energetica-optimizada-verde\/\">Eficiencia energ\u00e9tica con Tickless<\/a>, sobre todo si lo que quieres es reducir los gastos de electricidad.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/tickless-mode-scheduler-explained-4785.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Beneficios y efectos secundarios en la vida cotidiana<\/h2>\n\n<p>Menos ticks peri\u00f3dicos significan menos <strong>Cambio de contexto<\/strong> y, a menudo, tiempos de ejecuci\u00f3n m\u00e1s uniformes. En configuraciones de aislamiento, el ruido del sistema operativo disminuye, por lo que el c\u00f3digo sensible reacciona de forma m\u00e1s consistente. Seg\u00fan la Fundaci\u00f3n Linux y la documentaci\u00f3n del kernel, NO_HZ_IDLE ofrece mejoras significativas en el modo inactivo, mientras que NO_HZ_FULL reduce a\u00fan m\u00e1s los impulsos de interferencia. Los documentos sobre HPC confirman este efecto en combinaci\u00f3n con el pinning y la agrupaci\u00f3n de IRQ en n\u00facleos de mantenimiento. Quien realice mediciones de forma rigurosa podr\u00e1 observar claramente estos efectos en los perfiles de latencia y consumo energ\u00e9tico de los <strong>Anfitriones<\/strong>.<\/p>\n\n<h2>Riesgos derivados de una puesta a punto incorrecta<\/h2>\n\n<p>Veo problemas si las IRQ o las llamadas de retorno de RCU acaban, a pesar de todo, en n\u00facleos aislados y la <strong>Descanso<\/strong> destruir. Entonces, la ventaja se invierte, porque la carga de interferencia se produce de forma descoordinada y genera fluctuaciones. Los servicios en segundo plano no planificados, los temporizadores o los watchdogs en CPU aisladas tienen un efecto perturbador similar. Tambi\u00e9n las cargas de trabajo mixtas con muchas tareas breves distribuyen la inestabilidad de tal manera que el modo \u00abFull Tickless\u00bb resulta poco eficaz. Por eso incluyo claramente n\u00facleos de mantenimiento y pruebo cada paso con situaciones realistas <strong>Perfiles<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/ticless_mode_tech_buer_1593.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Las opciones principales del n\u00facleo explicadas de forma clara<\/h2>\n\n<p>Con <strong>CONFIG_NO_HZ_IDLE<\/strong> Desactivo el tictac en punto muerto y consigo mejoras r\u00e1pidas sin necesidad de grandes modificaciones. <strong>CONFIG_NO_HZ_FULL<\/strong> Solo lo activo cuando a\u00edslo estrictamente los n\u00facleos y defino CPU de mantenimiento limpias. El par\u00e1metro de arranque \u00abnohz_full\u00bb determina qu\u00e9 n\u00facleos funcionan sin reloj; \u00abisolcpus\u00bb los desacopla de la programaci\u00f3n general. rcu_nocbs desv\u00eda las llamadas de retorno de RCU de estos n\u00facleos, mientras que irqaffinity establece la responsabilidad de las interrupciones. Solo cuando se combinan, la configuraci\u00f3n funciona de manera constante y, por lo tanto, realmente <strong>\u00fatil<\/strong>.<\/p>\n\n<h2>Planificar los n\u00facleos de limpieza<\/h2>\n\n<p>Reservo uno o dos <strong>n\u00facleos<\/strong> Cada nodo NUMA act\u00faa como zona de mantenimiento para las IRQ, los hilos del n\u00facleo y la RCU. Estos n\u00facleos se encargan de las tareas inevitables del sistema y mantienen libres los n\u00facleos aislados. Para ello, asigno deliberadamente los servicios y las colas de IRQ a las CPU de mantenimiento y los bloqueo en los n\u00facleos silenciosos. Quien quiera <a href=\"https:\/\/webhosting.de\/es\/servidor-cpu-scheduler-class-scheduling\/\">Clases de programadores de CPU<\/a> comprende, gestiona las prioridades y garantiza la equidad de forma fiable. De este modo, las rutas de latencia se mantienen cortas y los n\u00facleos inactivos proporcionan un rendimiento predecible <strong>Tiempos de respuesta<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/entwicklerdesk_kernel_7123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Gu\u00eda pr\u00e1ctica: Paso a paso<\/h2>\n\n<p>Empiezo cada proyecto con un claro <strong>L\u00ednea de base<\/strong>-Run: latencia, consumo energ\u00e9tico, rendimiento, fluctuaci\u00f3n. A continuaci\u00f3n, compruebo si NO_HZ_IDLE est\u00e1 activo y si el n\u00facleo es compatible con NO_HZ_FULL. A continuaci\u00f3n, asigno la afinidad de IRQ, activo rcu_nocbs y programo las CPU de mantenimiento. Solo entonces a\u00edslo algunos n\u00facleos a modo de prueba con nohz_full y comparo los resultados. Para el an\u00e1lisis detallado, me sirve de ayuda esta gu\u00eda sobre <a href=\"https:\/\/webhosting.de\/es\/medir-la-latencia-del-programador-de-linux-y-optimizar-el-rendimiento\/\">Medir la latencia<\/a>, para poder evaluar cada cambio con precisi\u00f3n.<\/p>\n\n<h2>M\u00e9todos de medici\u00f3n e indicadores clave de rendimiento (KPI)<\/h2>\n\n<p>Mido de extremo a extremo...<strong>Latencia<\/strong> utilizo histogramas y cuantifico los valores at\u00edpicos, en lugar de limitarme a considerar solo los valores medios. Eval\u00fao conjuntamente el PPS y la latencia de cola, para que los n\u00facleos inactivos no reduzcan el rendimiento. Mido el consumo energ\u00e9tico mediante RAPL, IPMI o un contador conectado, y calculo el ahorro en <strong>Euro<\/strong> al mes. Ejemplo: si un host ahorra 12 W en funcionamiento 24 horas al d\u00eda, 7 d\u00edas a la semana, a un precio de 0,30 \u20ac\/kWh, el ahorro es de unos 3,15 \u20ac al mes por m\u00e1quina. Con 200 hosts, esto supone un ahorro considerable de 630 \u20ac al mes.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/kernel-scheduler-tickless-8475.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Una mirada m\u00e1s profunda: c\u00f3mo desactiva realmente el n\u00facleo los ticks<\/h2>\n<p>Detr\u00e1s de \u00abTickless\u00bb se esconde el cambio del \u00abtick\u00bb peri\u00f3dico a un <strong>Evento de reloj de una sola vez<\/strong>: El n\u00facleo programa el siguiente \u201eevento\u201c exactamente en el momento m\u00e1s temprano en que vence un temporizador o se toma una decisi\u00f3n del programador. Los temporizadores de alta resoluci\u00f3n (hrtimer) permiten una granularidad precisa. En un <strong>NO_HZ_FULL<\/strong>-En la CPU, el tick peri\u00f3dico del programador se omite mientras solo se est\u00e9 ejecutando una tarea y no haya trabajo del n\u00facleo. En cuanto hay dos o m\u00e1s tareas ejecutables, el n\u00facleo vuelve a iniciar el tick para garantizar la equidad y el reparto de tiempo. Es precisamente esta din\u00e1mica la que hace que el sistema sea m\u00e1s silencioso, sin perder la correcci\u00f3n de la programaci\u00f3n.<\/p>\n\n<h2>HZ, temporizador de alta resoluci\u00f3n y cuenta de tiempo<\/h2>\n<p>La constante del n\u00facleo <strong>HZ<\/strong> (normalmente 250 o 1000) determina la frecuencia del \u00abtick\u00bb cl\u00e1sico. Con \u00abTickless\u00bb, HZ pierde relevancia pr\u00e1ctica para los n\u00facleos en los que el tiempo de ejecuci\u00f3n es cr\u00edtico, pero sigue siendo relevante para la l\u00f3gica basada en \u00abjiffies\u00bb. Tambi\u00e9n es importante la <strong>Contabilizaci\u00f3n temporal<\/strong> (VTIME\/Context Tracking): Para que el tiempo de usuario y el tiempo del sistema se registren correctamente, el n\u00facleo realiza un seguimiento preciso de cu\u00e1ndo una tarea se encuentra en el n\u00facleo o en el espacio de usuario, sin necesidad de un tick permanente. Quien trabaje mucho con el perfilado deber\u00eda tenerlo en cuenta para interpretar correctamente las mediciones.<\/p>\n\n<h2>Mecanismos de ahorro de energ\u00eda y \u00abtickless\u00bb<\/h2>\n<p>Tickless solo desarrolla su efecto de ahorro energ\u00e9tico cuando la plataforma est\u00e1 en estado de hibernaci\u00f3n profunda <strong>Estados C<\/strong> de forma fiable. Por eso compruebo la configuraci\u00f3n del firmware y del kernel relacionada con intel_pstate\/amd-pstate, los modos turbo y <strong>cpufreq<\/strong>-Regulador. Un regulador de rendimiento agresivo puede reducir las latencias, pero va en contra de los objetivos energ\u00e9ticos. Por el contrario, un regulador de ahorro energ\u00e9tico demasiado lento puede reducir el rendimiento. Mi procedimiento: primero estabilizar la configuraci\u00f3n \u00abtickless\u00bb y, a continuaci\u00f3n, probar sistem\u00e1ticamente el ajuste de los estados P y C, en cada caso con perfiles de carga de trabajo id\u00e9nticos.<\/p>\n\n<h2>Virtualizaci\u00f3n y contenedores<\/h2>\n<p>En los hosts de hipervisor, se ejecuta <strong>Ralent\u00ed sin tictac<\/strong> a menudo se notan ahorros inmediatos, ya que las vCPU inactivas se activan con menos frecuencia. Para <strong>NO_HZ_FULL<\/strong> A\u00edslo los n\u00facleos f\u00edsicos y asigno las vCPU de las m\u00e1quinas virtuales cr\u00edticas exactamente a esos n\u00facleos. Importante: el \u00absteal time\u00bb y las IRQ del host no deben interferir en estos n\u00facleos. En los sistemas invitados, el modo \u00abFull Tickless\u00bb solo tiene sentido si el host proporciona el tiempo de CPU de forma determinista. En entornos de contenedores, replico la l\u00f3gica de aislamiento con <strong>cgroups y CPUsets<\/strong> y evita que los Systempods o los Sidecars ocupen los n\u00facleos silenciosos.<\/p>\n\n<h2>Optimizar las rutas de red y almacenamiento<\/h2>\n<p>Para conseguir latencias ultrabajas, agrupo <strong>Colas de RX\/TX<\/strong> y sus IRQ en CPU de mantenimiento. En los n\u00facleos inactivos, prefiero trabajar con sondeos en el espacio de usuario o con hilos de finalizaci\u00f3n espec\u00edficos, en lugar de permitir el uso de IRQ. En el caso de NVMe, se puede <strong>Afinidad de cola de E\/S<\/strong> ayuda de forma similar. El sondeo NAPI-Busy se puede utilizar de forma espec\u00edfica cuando la fluctuaci\u00f3n del sondeo es m\u00e1s predecible que la fluctuaci\u00f3n de las interrupciones. El objetivo es que los n\u00facleos aislados nunca se activen de forma inesperada debido a eventos externos.<\/p>\n\n<h2>Ejemplo: Par\u00e1metros de arranque y fijaci\u00f3n<\/h2>\n<p>A continuaci\u00f3n describo una configuraci\u00f3n m\u00ednima (por ejemplo, 16 n\u00facleos, los n\u00facleos 0-1 para tareas de mantenimiento; los 2-7 y los 10-15 como candidatos para la carga de trabajo; y los 8-9 para servicios del sistema):<\/p>\n<pre><code>GRUB_CMDLINE_LINUX=\"nohz_full=2-7,10-15 rcu_nocbs=2-7,10-15 isolcpus=2-7,10-15 irqaffinity=0-1\"<\/code><\/pre>\n<p>Tras el arranque, aplico Affinity y CPUsets de forma coherente:<\/p>\n<pre><code>Agrupar IRQ de #\nfor i in $(grep -E 'eth0|nvme' \/proc\/interrupts | awk -F: '{print $1}'); do\n  echo 3 &gt; \/proc\/irq\/$i\/smp_affinity_list   # CPU 0-1\ndone\n\n# Fijar un servicio con latencia cr\u00edtica\ntaskset -c 2-3 \/usr\/bin\/mi_servicio\n\n# cgroup-cpuset para servicios del sistema (ejemplo)\nmkdir -p \/sys\/fs\/cgroup\/cpuset\/housekeeping\necho 0-1,8-9 &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cpuset.cpus\necho 0 &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cpuset.mems\necho $$ &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cgroup.procs<\/code><\/pre>\n<p>En las unidades de systemd utilizo adem\u00e1s <strong>Afinidad CP=<\/strong> o <strong>AllowedCPUs=<\/strong>, para que los servicios utilicen siempre los n\u00facleos correctos.<\/p>\n\n<h2>Diagn\u00f3stico: comprobar si los n\u00facleos son realmente silenciosos<\/h2>\n<p>Compruebo el estado de reposo de mis n\u00facleos con unos pocos pasos:\n\u2013 \/proc\/interrupts: \u00bfAumenta el contador en las CPU aisladas? Si es as\u00ed, corrige la afinidad de IRQ.\n\u2013 \/proc\/timer_list: identificar temporizadores inesperados en n\u00facleos NO_HZ_FULL.\n\u2013 ftrace\/perf: hacer visibles las activaciones, las softirqs y los eventos de programaci\u00f3n.\n\u2013 turbostat: comprobar los tiempos de permanencia en los estados C.\nSi siguen produci\u00e9ndose softirqs (NET_RX, TIMER) en n\u00facleos inactivos, casi siempre se trata de un problema de distribuci\u00f3n o de controlador.<\/p>\n\n<h2>Interacci\u00f3n con PREEMPT_RT y RT-Threads<\/h2>\n<p><strong>PREEMPT_RT<\/strong> Reduce las latencias al integrar la preempci\u00f3n en lo m\u00e1s profundo del n\u00facleo. En combinaci\u00f3n con NO_HZ_FULL, esto puede ofrecer muy buenos resultados cuando las IRQ se ejecutan como subprocesos y se mantienen estrictamente en CPU de mantenimiento. Importante: no dispersar los hilos RT, sino fijarlos de forma ajustada y controlar sus rutas de memoria (NUMA, fallos de p\u00e1gina). Mantengo los hilos RT en n\u00facleos aislados siempre \u201esolos\u201c, para que ning\u00fan tick vuelva debido a la aparici\u00f3n de una segunda tarea ejecutable.<\/p>\n\n<h2>Cu\u00e1ndo no merece la pena el \u00abFull Tickless\u00bb<\/h2>\n<p>No utilizo NO_HZ_FULL cuando:\n\u2013 Se generan constantemente muchas tareas de corta duraci\u00f3n (por ejemplo, r\u00e1fagas de Fork\/Exec).\n\u2013 La carga de trabajo est\u00e1 muy sincronizada y obliga constantemente a cambios de n\u00facleo.\n\u2013 La plataforma no alcanza estados C limpios o el TSC es inestable.\nEn tales casos, resulta \u00fatil <strong>Asignaci\u00f3n de IRQ y CPU<\/strong> a menudo m\u00e1s que el coste de un aislamiento completo.<\/p>\n\n<h2>Aspectos detallados de la producci\u00f3n: supervisi\u00f3n y funcionamiento<\/h2>\n<p>En entornos productivos, advierto sobre los cambios \u201esigilosos\u201c: una actualizaci\u00f3n del kernel, un nuevo agente o una modificaci\u00f3n en la asignaci\u00f3n de IRQ pueden alterar el funcionamiento de los n\u00facleos. Por ello, establezco:\n\u2013 Un script de \u201eprotecci\u00f3n\u201c que comprueba la afinidad, los conjuntos de CPU y la configuraci\u00f3n de RCU tras cada reinicio.\n\u2013 M\u00e9tricas sobre despertares por segundo, residencias en C-State y latencia p99,9.\n\u2013 Peri\u00f3dicas <strong>Pruebas de regresi\u00f3n<\/strong> con cargas de trabajo id\u00e9nticas.\nSolo as\u00ed se mantiene de forma fiable la ventaja del modo \u00abtickless\u00bb.<\/p>\n\n<h2>Eliminar de forma selectiva las fuentes de fluctuaci\u00f3n<\/h2>\n<p>Adem\u00e1s de las IRQ, a menudo se producen <strong>Temporizador en el espacio de usuario<\/strong> (sleep\/usleep\/timerfd) para patrones irregulares. Trabajo con <em>temporizador de holgura<\/em> (prctl o \/proc) y agrupar\u00e9 las vencimientos para que el n\u00facleo programe menos despertares individuales. Tambi\u00e9n programar\u00e9 temporalmente los GC en segundo plano en entornos de ejecuci\u00f3n gestionados (JVM, Go) o los aislar\u00e9 en n\u00facleos de mantenimiento. El objetivo es siempre permitir \u00fanicamente las activaciones absolutamente necesarias en los n\u00facleos NO_HZ_FULL.<\/p>\n\n<h2>Interpretaci\u00f3n de los KPI: poner de manifiesto las compensaciones<\/h2>\n<p>No solo eval\u00fao los valores medios, sino tambi\u00e9n los <strong>Distribuci\u00f3n<\/strong>: p50, p95, p99,9 y m\u00e1ximo. Un patr\u00f3n t\u00edpico de \u00e9xito: la latencia de cola se reduce notablemente, el rendimiento medio se mantiene igual o aumenta ligeramente, y el tiempo de permanencia en el estado C se reduce. Por el contrario, si observo un aumento de la fluctuaci\u00f3n, pero un rendimiento notablemente menor, ajusto la pol\u00edtica de frecuencia de la CPU o aumento con cautela el n\u00famero de n\u00facleos inactivos para evitar que las colas se saturen.<\/p>\n\n<h2>Lista de comprobaci\u00f3n antes de activar NO_HZ_FULL<\/h2>\n<p>\n\u2013 Caracter\u00edsticas del n\u00facleo: CONFIG_NO_HZ_FULL, temporizador de alta resoluci\u00f3n activado<br\/>\n\u2013 Funciones claras de la CPU: CPU de mantenimiento definidas por nodo NUMA<br\/>\n\u2013 Descarga de IRQ y RCU: irqaffinity y rcu_nocbs configurados de forma coherente<br\/>\n\u2013 Ubicaci\u00f3n de servicios: fijaci\u00f3n de systemd\/cgroups documentada y probada<br\/>\n\u2013 Configuraci\u00f3n de la medici\u00f3n: cargas de trabajo reproducibles, indicadores clave de rendimiento (KPI) significativos, comparaci\u00f3n <em>antes\/despu\u00e9s<\/em><br\/>\n\u2013 Plan de reversi\u00f3n: entrada de arranque disponible sin NO_HZ_FULL\n<\/p>\n\n<h2>Problemas habituales y soluciones<\/h2>\n\n<p>A menudo veo que los servicios del sistema se ejecutan en n\u00facleos aislados y que el <strong>Aislamiento<\/strong> menoscabar. Para evitarlo, resultan \u00fatiles systemd-Affinity, los CPUsets de cgroups y una documentaci\u00f3n clara de los servicios. Las asignaciones err\u00f3neas de NUMA tambi\u00e9n provocan accesos remotos innecesarios y picos de latencia. Vinculo la memoria y los hilos estrictamente al nodo correspondiente, para que las rutas sean cortas y coherentes <strong>permanezca en<\/strong>. La distribuci\u00f3n poco clara de las IRQ es el tercer problema habitual, por lo que agrupo las colas con mayor tr\u00e1fico en las CPU de mantenimiento.<\/p>\n\n<h2>Resumen breve para la pr\u00e1ctica<\/h2>\n\n<p>El <strong>sin tictac<\/strong> El kernel reduce los ticks molestos, ahorra energ\u00eda y crea intervalos de tiempo fiables para cargas de trabajo sensibles. Con \u00abTickless Idle\u00bb consigo r\u00e1pidamente mejoras en la eficiencia, mientras que \u00abFull Tickless\u00bb aporta mayor tranquilidad a los n\u00facleos aislados. El mayor efecto lo observo cuando agrupo de forma ordenada las IRQ, el RCU y las tareas en segundo plano en las CPU de mantenimiento. Sin mediciones no hay nada que hacer: la latencia, la fluctuaci\u00f3n, el consumo energ\u00e9tico y el rendimiento me indican si el ajuste da sus frutos. As\u00ed es como utilizo el modo \u00abtickless\u00bb de forma selectiva y saco el m\u00e1ximo partido al <strong>programador<\/strong> fuera.<\/p>","protected":false},"excerpt":{"rendered":"<p>El n\u00facleo \u00abtickless\u00bb explicado de forma sencilla: ventajas, riesgos y optimizaci\u00f3n del n\u00facleo para servidores, HPC y sistemas de baja latencia.<\/p>","protected":false},"author":1,"featured_media":21500,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21507","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"62","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"tickless mode","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21500","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=21507"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21507\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/21500"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=21507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=21507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=21507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}