{"id":21103,"date":"2026-08-28T11:49:48","date_gmt":"2026-08-28T09:49:48","guid":{"rendered":"https:\/\/webhosting.de\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/"},"modified":"2026-08-28T11:49:48","modified_gmt":"2026-08-28T09:49:48","slug":"desactivar-o-mantener-activado-el-equilibrio-de-numa-para-un-rendimiento-optimo-en-linux","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/","title":{"rendered":"Equilibrio NUMA en Linux: \u00bfdesactivarlo o dejarlo activado?"},"content":{"rendered":"<p>El equilibrio NUMA en Linux determina si el <strong>N\u00facleo<\/strong> Si los accesos a la memoria se localizan autom\u00e1ticamente o si yo mismo controlo la ubicaci\u00f3n de forma espec\u00edfica. En esta gu\u00eda te muestro cu\u00e1ndo dejo activado el \u00abnuma balancing\u00bb y cu\u00e1ndo lo desactivo para <strong>Latencia<\/strong>-Desactiva la seguridad.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<ul>\n  <li><strong>Autom\u00e1tico<\/strong> Ayuda con cargas de trabajo mixtas sin necesidad de ajustar NUMA.<\/li>\n  <li><strong>Desactivar<\/strong> en casos de pinning, pol\u00edticas est\u00e1ticas o latencia elevada.<\/li>\n  <li><strong>Sobrecarga<\/strong> Se genera a ra\u00edz de escaneos, fallos y migraciones.<\/li>\n  <li><strong>Configuraci\u00f3n<\/strong> controlarlo mediante sysctl o par\u00e1metros de arranque.<\/li>\n  <li><strong>Pruebas<\/strong> y medir en lugar de adivinar, y luego decidir.<\/li>\n<\/ul>\n\n<h2>NUMA en pocas palabras: latencias y localidad<\/h2>\n\n<p>En los sistemas NUMA, el hardware organiza la memoria en varios nodos, cada uno de los cuales <strong>CPUs<\/strong> est\u00e1n cerca geogr\u00e1ficamente. Los accesos locales requieren menos tiempo que los remotos, lo cual me doy cuenta enseguida de <strong>Latencia<\/strong> y noto la falta de ancho de banda. Si un proceso se ejecuta en un nodo, pero los datos se encuentran en otro, pierdo valiosos microsegundos por cada acceso. Es precisamente aqu\u00ed donde entra en acci\u00f3n el n\u00facleo y optimiza la <strong>Localidad<\/strong> de p\u00e1ginas. Quien comprenda la idea b\u00e1sica se dar\u00e1 cuenta r\u00e1pidamente de que la proximidad entre los n\u00facleos de c\u00e1lculo y los datos es el camino directo hacia una <strong>Actuaci\u00f3n<\/strong>.<\/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\/08\/linux-numa-balancing-2345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>C\u00f3mo funciona el equilibrio autom\u00e1tico NUMA<\/h2>\n\n<p>El n\u00facleo observa desde qu\u00e9 n\u00facleos un proceso accede a las p\u00e1ginas y activa de forma selectiva <strong>Pista<\/strong>-Faults. De este modo, detecta qu\u00e9 nodo recibe m\u00e1s accesos y, a continuaci\u00f3n, traslada las p\u00e1ginas correspondientes a ese nodo. Estas migraciones reducen los accesos remotos y aumentan el tr\u00e1fico local <strong>Tasa de aciertos<\/strong>. Observo este efecto especialmente en cargas de trabajo din\u00e1micas, en las que los subprocesos se desplazan y la memoria se mueve. Quien quiera profundizar en el tema puede consultar las relaciones entre la proximidad de la CPU y la memoria a trav\u00e9s de <a href=\"https:\/\/webhosting.de\/es\/servidor-numa-localidad-cpu-memoria-afinidad-optimizacion-nucleo\/\">Afinidad de CPU\/memoria<\/a> comprenderlo en la pr\u00e1ctica.<\/p>\n\n<h2>Cu\u00e1ndo mantenerlo activo: cargas de trabajo t\u00edpicas<\/h2>\n\n<p>Dejo la funci\u00f3n activa cuando las aplicaciones no tienen su propia l\u00f3gica NUMA y los procesos suelen <strong>cambiar<\/strong>. Los candidatos m\u00e1s habituales son los servidores de aplicaciones, las bases de datos con carga variable y los hosts con muchos <strong>reciclaje de comida<\/strong>. En este tipo de configuraciones, el sistema autom\u00e1tico acerca m\u00e1s las p\u00e1ginas y los hilos sin que tenga que fijarlos manualmente. Especialmente en servidores con m\u00faltiples sockets, el porcentaje de accesos locales aumenta notablemente. Para los administradores con servicios heterog\u00e9neos, esto supone una buena <strong>Compromiso<\/strong> por la rapidez y el esfuerzo que supone.<\/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\/08\/numa_balancing_linux_5843.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cu\u00e1ndo desactivarlo: criterios claros<\/h2>\n\n<p>Desactivo el modo autom\u00e1tico en cuanto me doy cuenta de que estoy haciendo pin o me estoy aclarando. <strong>Pol\u00edticas<\/strong> establezco. Si utilizo numactl, cgroups o MPOL_BIND\/MPOL_PREFERRED, ya existe una decisi\u00f3n definitiva sobre las rutas de memoria. En ese caso, los \u00abhint faults\u00bb y las migraciones generan un consumo innecesario de <strong>Sobrecarga<\/strong>. Lo mismo ocurre en los escenarios en tiempo real o de negociaci\u00f3n de alta frecuencia (HFT), en los que cada microsegundo cuenta y la previsibilidad es prioritaria. Quien se adentre m\u00e1s a fondo en la elecci\u00f3n de las reglas de colocaci\u00f3n, se beneficiar\u00e1 de un an\u00e1lisis de las opciones adecuadas <a href=\"https:\/\/webhosting.de\/es\/politicas-de-memoria-numa-servidores-de-bases-de-datos-optimizacion-de-servidores\/\">Pol\u00edticas de memoria<\/a>.<\/p>\n\n<h2>Comprender y medir los gastos generales<\/h2>\n\n<p>El equilibrado autom\u00e1tico genera trabajo: escaneos, <strong>Fallos<\/strong> y las migraciones de p\u00e1ginas consumen tiempo de CPU. Esto apenas se nota cuando los accesos remotos disminuyen considerablemente, pero no merece la pena si el dise\u00f1o ya est\u00e1 almacenado localmente. Por eso, siempre compruebo el efecto real con numastat, perf y m\u00e9tricas significativas <strong>Puntos de referencia<\/strong>. Lo interesante es la evoluci\u00f3n a lo largo de los minutos, no solo un pico breve. Solo cuando los valores de medici\u00f3n muestren de forma constante que el tr\u00e1fico local aumenta y las latencias disminuyen, mantendr\u00e9 ese modo.<\/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\/08\/numa-balancing-decision-linux-4539.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Configuraci\u00f3n: Sysctl y par\u00e1metros de arranque<\/h2>\n\n<p>Compruebo el estado a trav\u00e9s de \/proc o Sysctl y, si es necesario, lo modifico de inmediato, sin un <strong>Reinicie<\/strong>. Para realizar pruebas, bastan comandos sencillos como los que aparecen a continuaci\u00f3n, que ejecuto en la consola. De forma permanente, configuro el valor en un archivo sysctl para que se mantenga tras un reinicio. Quien quiera configurarlo ya durante el arranque, puede utilizar el par\u00e1metro del n\u00facleo numa_balancing=enable o <strong>desactivar<\/strong>. Documento cada cambio y anoto en qu\u00e9 fase de la carga de trabajo lo he realizado.<\/p>\n\n<pre><code>cat \/proc\/sys\/kernel\/numa_balancing\necho 0 &gt; \/proc\/sys\/kernel\/numa_balancing\nsysctl -w kernel.numa_balancing=1\n# \/etc\/sysctl.d\/90-numa.conf\n# kernel.numa_balancing = 0\n<\/code><\/pre>\n\n<h2>Escenarios de contenedores y virtualizaci\u00f3n<\/h2>\n\n<p>En los servidores con muchas m\u00e1quinas virtuales y contenedores, la automatizaci\u00f3n <strong>Localizaci\u00f3n<\/strong> a menudo sacan partido de sus puntos fuertes. Los procesos se inician y finalizan, los cgroups redistribuyen la carga, y el n\u00facleo mantiene la memoria m\u00e1s cerca de los n\u00facleos activos. Lo observo sobre todo en grandes servidores multisocket con varios <strong>Nodos<\/strong>. Los casos especiales en los que se aplica un \u00abpinning\u00bb estricto a instancias concretas los separo claramente y desactivo all\u00ed de forma espec\u00edfica la funci\u00f3n autom\u00e1tica. Para una clasificaci\u00f3n m\u00e1s detallada, resulta \u00fatil echar un vistazo a ejemplos pr\u00e1cticos <a href=\"https:\/\/webhosting.de\/es\/numa-equilibrio-servidor-optimizacion-de-memoria-hardware-numaflux\/\">Optimizaci\u00f3n NUMA<\/a> en modo host.<\/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\/08\/numa_balancing_linux_5823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tabla de decisiones para la pr\u00e1ctica<\/h2>\n\n<p>El siguiente resumen recoge los escenarios t\u00edpicos, el efecto esperado y mi clara <strong>Recomendaci\u00f3n<\/strong>. Las utilizo como punto de partida, pero nunca las sustituyo por los valores medidos en el sistema real. Cada entorno presenta sus propias particularidades, y solo tomo decisiones tras obtener resultados reproducibles <strong>Resultados<\/strong> sin duda. Quien act\u00fae de forma sistem\u00e1tica ahorrar\u00e1 tiempo m\u00e1s adelante a la hora de detectar errores y realizar ajustes. Las peque\u00f1as pruebas previas a una puesta en marcha casi siempre dan sus frutos en <strong>Constance<\/strong> y la previsibilidad.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Escenario<\/th>\n      <th>Efectos t\u00edpicos<\/th>\n      <th>Mi recomendaci\u00f3n<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Cargas de trabajo est\u00e1ndar sin ajuste NUMA<\/td>\n      <td>M\u00e1s accesos locales, menos accesos remotos <strong>Lee<\/strong><\/td>\n      <td>Dejar activo<\/td>\n    <\/tr>\n    <tr>\n      <td>Bases de datos con carga variable<\/td>\n      <td>Localizaci\u00f3n din\u00e1mica de p\u00e1ginas, moderada <strong>Escaneos<\/strong><\/td>\n      <td>Dejarlo activo, probarlo<\/td>\n    <\/tr>\n    <tr>\n      <td>Tiempo real estricto o HFT<\/td>\n      <td>La latencia de Hint-Fault es un problema <strong>Jitter<\/strong>-Objetivos<\/td>\n      <td>Desactivar, fijar manualmente<\/td>\n    <\/tr>\n    <tr>\n      <td>Asignaci\u00f3n manual mediante numactl\/cgroups<\/td>\n      <td>El sistema autom\u00e1tico choca con los fijos <strong>Pol\u00edticas<\/strong><\/td>\n      <td>Desactivar<\/td>\n    <\/tr>\n    <tr>\n      <td>Pol\u00edticas de memoria est\u00e1ticas (MPOL_BIND, etc.)<\/td>\n      <td>Las migraciones no aportan ning\u00fan beneficio real <strong>Ventaja<\/strong><\/td>\n      <td>Desactivar<\/td>\n    <\/tr>\n    <tr>\n      <td>Entorno de pruebas y an\u00e1lisis<\/td>\n      <td>Buena visi\u00f3n de la localidad y <strong>Efectos<\/strong><\/td>\n      <td>Dejarlo activo, comprobar las variantes<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Gu\u00eda para las pruebas y la validaci\u00f3n<\/h2>\n\n<p>Empiezo con el equilibrador activado y registro los datos locales frente a los remotos <strong>Accede a<\/strong> a trav\u00e9s de Numastat. A continuaci\u00f3n, desactivo la funci\u00f3n y repito las mediciones tal y como las hab\u00eda realizado antes. No eval\u00fao las diferencias \u00fanicamente en t\u00e9rminos de valores medios, sino tambi\u00e9n en <strong>Percentiles<\/strong>. Las pruebas de regresi\u00f3n con perfiles de carga de la producci\u00f3n ofrecen los resultados m\u00e1s fiables. Solo entonces tomo la decisi\u00f3n definitiva sobre si optar por un servidor f\u00edsico, una m\u00e1quina virtual o un determinado <strong>Servicio<\/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\/08\/devdesk_linux_numa_bal_7283.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Obst\u00e1culos habituales y mitos<\/h2>\n\n<p>Un error muy extendido es pensar que el modo autom\u00e1tico sustituye a cualquier <strong>Pinning<\/strong>. Eso no es cierto, ya que los presupuestos de latencia r\u00edgidos apenas admiten fallos adicionales. Igualmente err\u00f3nea es la suposici\u00f3n de que las migraciones siempre <strong>gratis...<\/strong> ocurrir. Precisamente en el caso de dise\u00f1os que, de por s\u00ed, son locales, la sobrecarga suele tener un efecto m\u00e1s negativo que positivo. Quien evita los mitos y realiza mediciones precisas, toma decisiones con una precisi\u00f3n significativamente mayor <strong>Precisi\u00f3n<\/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\/08\/linux-numa-balancing-8192.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>L\u00edmites de la automatizaci\u00f3n e interacciones<\/h2>\n\n<p>AutoNUMA tiene un gran impacto en las p\u00e1ginas an\u00f3nimas que un proceso asigna por s\u00ed mismo. Sin embargo, no todo se puede migrar de forma adecuada. Las p\u00e1ginas fijadas (mlock), la memoria DMA o de dispositivo, las \u00e1reas registradas por DAX o RDMA permanecen donde est\u00e1n. Asimismo, las p\u00e1ginas compartidas (por ejemplo, bibliotecas muy compartidas o la cach\u00e9 de p\u00e1ginas) solo aportan un beneficio limitado mediante la migraci\u00f3n, ya que varios procesos compiten por <strong>Modelo de acceso<\/strong> generar. Adem\u00e1s, tengo en cuenta los costes de <strong>P\u00e1ginas enormes transparentes<\/strong> (THP): su migraci\u00f3n resulta m\u00e1s costosa que en el caso de las p\u00e1ginas de 4 KiB y puede provocar picos de carga. Quienes persiguen objetivos estrictos de latencia suelen combinar THP=never o madvise con el equilibrio desactivado y un pinning limpio, para evitar sorpresas.<\/p>\n\n<p>Otro aspecto es la interacci\u00f3n con el programador de la CPU. El programador intenta ubicar los subprocesos donde se encuentran sus datos, mientras que el equilibrador traslada los datos hasta donde se ejecutan los subprocesos. Ambos se complementan, pero en caso de carga irregular pueden provocar moment\u00e1neamente <strong>Oscilaciones<\/strong> provocar. En la pr\u00e1ctica, los intervalos de escaneo aten\u00faan estos efectos; quien observe perfiles de carga extremadamente inestables puede aliviar la situaci\u00f3n mediante per\u00edodos de escaneo m\u00e1s largos o mediante una fijaci\u00f3n de subprocesos m\u00e1s estable.<\/p>\n\n<h2>Ajuste preciso de los par\u00e1metros de escaneo<\/h2>\n\n<p>Adem\u00e1s del interruptor global, existen par\u00e1metros del kernel con los que puedo ajustar con precisi\u00f3n el nivel de agresividad del sistema autom\u00e1tico. Los nombres exactos pueden variar ligeramente seg\u00fan la versi\u00f3n del kernel, pero la finalidad sigue siendo la misma:<\/p>\n\n<ul>\n  <li>kernel.numa_balancing_scan_delay_ms: Tiempo de espera tras un inicio, un \u00abfork\u00bb o un \u00abexec\u00bb hasta que comienza el primer escaneo.<\/li>\n  <li>kernel.numa_balancing_scan_period_min_ms \/ _max_ms: L\u00edmites m\u00ednimo y m\u00e1ximo de la frecuencia de exploraci\u00f3n por rango de direcciones de proceso.<\/li>\n  <li>kernel.numa_balancing_rate_limit_mb: L\u00edmite m\u00e1ximo por intervalo de tiempo para las migraciones de p\u00e1ginas, con el fin de optimizar el ancho de banda de la memoria.<\/li>\n  <li>kernel.numa_balancing_scan_size_mb: Cantidad de memoria que se marca por cada pasada de exploraci\u00f3n (si est\u00e1 disponible).<\/li>\n<\/ul>\n\n<p>En configuraciones en las que la latencia es cr\u00edtica, prefiero aumentar de forma prudente los per\u00edodos m\u00ednimos y m\u00e1ximos y reducir los l\u00edmites de frecuencia, en lugar de desactivar inmediatamente el modo autom\u00e1tico. Esto suele ofrecer un buen t\u00e9rmino medio: menos errores de indicaci\u00f3n, menos migraciones, pero a\u00fan con suficiente capacidad de respuesta ante errores de ubicaci\u00f3n reales.<\/p>\n\n<pre><code>Ejemplos de # (temporales, hasta el reinicio)\nsysctl -w kernel.numa_balancing_scan_period_min_ms=60000\nsysctl -w kernel.numa_balancing_scan_period_max_ms=240000\nsysctl -w kernel.numa_balancing_rate_limit_mb=64\n<\/code><\/pre>\n\n<h2>M\u00e9tricas y diagn\u00f3stico en profundidad<\/h2>\n\n<p>Para tomar decisiones bien fundamentadas, analizo m\u00e9tricas que ponen de manifiesto directamente el mecanismo. Utilizo tres fuentes de forma habitual:<\/p>\n\n<ul>\n  <li>numastat: proporci\u00f3n de accesos locales y remotos en todo el sistema y por proceso.<\/li>\n  <li>\/proc\/\/numa_maps: distribuci\u00f3n de las p\u00e1ginas de memoria de un proceso entre los nodos, incluyendo indicadores como \u00abactive\u00bb, \u00abfile\u00bb y \u00abanon\u00bb.<\/li>\n  <li>\/proc\/vmstat: los contadores como numa_hint_faults, numa_hint_faults_local y numa_pages_migrated indican si el equilibrador est\u00e1 funcionando y si <strong>\u00c9xito<\/strong> tiene.<\/li>\n<\/ul>\n\n<pre><code>Resumen de # por proceso\nnumastat -p \n\nVista detallada de #: \u00bfqu\u00e9 \u00e1reas se encuentran en cada lugar?\ngrep -E 'anon|file' \/proc\/\/numa_maps | head\n\n#: visi\u00f3n a nivel del n\u00facleo de la actividad de AutoNUMA\ngrep -E 'numa_(hint_faults|pages_migrated)' \/proc\/vmstat\n<\/code><\/pre>\n\n<p>Busco tendencias en los resultados: \u00bfaumenta de forma constante el porcentaje de accesos locales? \u00bfDisminuyen al mismo tiempo los \u00abhint faults\u00bb? En ese caso, el dise\u00f1o funciona bien. Si la proporci\u00f3n de acceso local se mantiene estable a pesar de las numerosas migraciones, tiendo a desperdiciar ciclos. Para los objetivos de latencia, compruebo adem\u00e1s los percentiles 95 y 99 de los tiempos de respuesta; las peque\u00f1as mejoras en la media pueden verse contrarrestadas por <strong>Jitter<\/strong> quedar cubiertos.<\/p>\n\n<h2>Perfiles de carga de trabajo: lo que suele funcionar<\/h2>\n\n<p>La experiencia pr\u00e1ctica ha puesto de manifiesto en qu\u00e9 casos AutoNUMA suele ser \u00fatil y en cu\u00e1les no:<\/p>\n\n<ul>\n  <li>Servicios de la JVM y servidores de aplicaciones: suelen ofrecer ventajas siempre que no se aplique una estrategia estricta de fijaci\u00f3n de subprocesos ni una l\u00f3gica NUMA propia demasiado agresiva. Algunos entornos de ejecuci\u00f3n ofrecen opciones NUMA; si las utilizo de forma estricta, reduzco la automatizaci\u00f3n o la desactivo.<\/li>\n  <li>Bases de datos relacionales: con una carga variable y cach\u00e9s mixtas, el sistema autom\u00e1tico suele funcionar bien. Sin embargo, si configuro el \u00abpinning\u00bb dedicado (de trabajador a nodo, con los b\u00faferes compartidos distribuidos de forma estricta), desactivo el equilibrio para garantizar una reproducibilidad clara.<\/li>\n  <li>Almacenamientos en memoria y cach\u00e9s: un conjunto de datos de trabajo grande y muy activo se beneficia de la ubicaci\u00f3n local. Si la instancia funciona en un solo subproceso o est\u00e1 estrictamente fijada, evito migraciones innecesarias desactivando esta funci\u00f3n.<\/li>\n  <li>HPC\/MPI y c\u00f3digos cient\u00edficos: en la mayor\u00eda de los casos existen reglas claras de ubicaci\u00f3n y enlace (OpenMP\/numactl). En este caso, la previsibilidad es m\u00e1s importante que la automatizaci\u00f3n; por lo tanto, omito el equilibrio NUMA.<\/li>\n<\/ul>\n\n<h2>Virtualizaci\u00f3n: vNUMA, \u00abpinning\u00bb y migraci\u00f3n en vivo<\/h2>\n\n<p>En la interacci\u00f3n entre anfitri\u00f3n e invitado, tengo en cuenta ambos niveles:<\/p>\n\n<ul>\n  <li>Si la topolog\u00eda vNUMA del invitado coincide con la topolog\u00eda NUMA f\u00edsica del anfitri\u00f3n, el equilibrador del invitado puede tomar decisiones acertadas. Si se produce una desviaci\u00f3n, surgen \u201evecindades err\u00f3neas\u201c que AutoNUMA solo compensa de forma limitada.<\/li>\n  <li>Si asigno de forma fija las vCPU a las CPU del host y vinculo la memoria del sistema invitado a nodos concretos, se trata de una pol\u00edtica expl\u00edcita: reduzco o desactivo AutoNUMA a este nivel de m\u00e1quina virtual para evitar migraciones duplicadas.<\/li>\n  <li>Tras las migraciones en vivo, observo una fase de estabilizaci\u00f3n: los \u00abhint-faults\u00bb aumentan hasta que se alcanza un nuevo equilibrio. Durante este tiempo, preveo un margen para <strong>Latencia<\/strong>-puntas.<\/li>\n<\/ul>\n\n<p>En hosts de virtualizaci\u00f3n con alta densidad, donde las instancias se inician y se detienen y los cgroups redistribuyen la carga, la gesti\u00f3n autom\u00e1tica en el host suele suponer una ventaja neta. Para m\u00e1quinas virtuales dedicadas sensibles a los \u201evecinos ruidosos\u201c, a\u00edslo los recursos de forma clara y configuro las reglas de forma est\u00e1tica.<\/p>\n\n<h2>Valores objetivo pragm\u00e1ticos y criterios de aceptaci\u00f3n<\/h2>\n\n<p>Voy a definir de antemano qu\u00e9 significa \u201ebueno\u201c, para no estar ajustando los detalles sin fin:<\/p>\n\n<ul>\n  <li>Servicios generales: 70\u201385%; los accesos locales suelen ser suficientes cuando la varianza es baja.<\/li>\n  <li>SLA de latencia: objetivo &gt;90% a nivel local, l\u00edmites m\u00e1ximos claros para la tasa de fallos ocultos y percentiles del 99 % estables.<\/li>\n  <li>Con gran consumo de ancho de banda: las migraciones no deben saturar los canales de almacenamiento; ajustar los l\u00edmites de velocidad y los periodos en consecuencia.<\/li>\n<\/ul>\n\n<p>Documento estos umbrales y eval\u00fao pruebas A\/B a lo largo de varias fases de carga. No tomo ninguna decisi\u00f3n hasta que los resultados sean repetibles.<\/p>\n\n<h2>Lista de comprobaci\u00f3n para la resoluci\u00f3n de problemas<\/h2>\n\n<ul>\n  <li>Picos repentinos de latencia: comprueba si hay una correlaci\u00f3n entre las migraciones de THP y los picos en \u00abnuma_hint_faults\u00bb. Medida correctiva: aumenta los periodos de escaneo, configura THP en \u00abmadvise\/never\u00bb y, si es necesario, desactiva el equilibrio.<\/li>\n  <li>Apenas se nota el efecto a pesar de la activaci\u00f3n: \u00bfest\u00e1n los subprocesos muy fijados o existen pol\u00edticas de memoria fijas? En ese caso, el sistema autom\u00e1tico entra en conflicto con las especificaciones.<\/li>\n  <li>Alto ritmo de migraci\u00f3n, pero aun as\u00ed muchos accesos remotos: comprobar y aumentar el l\u00edmite de tasa; como alternativa, estabilizar la carga de trabajo (fijaci\u00f3n de subprocesos, mantener las cach\u00e9s en estado \u00abcaliente\u00bb).<\/li>\n  <li>Valores de medici\u00f3n poco claros: utiliza la vista por proceso con numastat -p y \/proc\/\/numa_maps, no solo los valores globales del sistema.<\/li>\n<\/ul>\n\n<h2>Detalles que suelen pasarse por alto<\/h2>\n\n<ul>\n  <li>Cargas de trabajo que dependen en gran medida de la cach\u00e9 de p\u00e1ginas: AutoNUMA es especialmente eficaz en p\u00e1ginas an\u00f3nimas. Quien trabaje principalmente con tareas limitadas por la E\/S no debe esperar milagros del equilibrio de carga.<\/li>\n  <li>Cgroups y cpusets: el archivo cpuset.mems limita los nodos a los que un grupo puede acceder. Se trata de un marco r\u00edgido dentro del cual act\u00faa el sistema autom\u00e1tico.<\/li>\n  <li>Conexi\u00f3n en caliente de la memoria\/desconexi\u00f3n de nodos: las topolog\u00edas din\u00e1micas modifican las distancias; tras los cambios, conviene realizar una nueva prueba y, si es necesario, ajustar los par\u00e1metros de escaneo.<\/li>\n<\/ul>\n\n<h2>Brevemente resumido<\/h2>\n\n<p>Para las cargas de trabajo generales del servidor, dejo activada la funci\u00f3n autom\u00e1tica, ya que, sin intervenci\u00f3n manual, casi <strong>Datos<\/strong> lo que genera n\u00facleos activos. En situaciones de tiempo real, trading de alta frecuencia (HFT), fijaci\u00f3n manual o pol\u00edticas fijas, los desactivo para evitar sobrecarga y fluctuaciones. En las fases de prueba, trabajo de forma iterativa: medir, decidir, volver a <strong>valide<\/strong>. Mantengo la configuraci\u00f3n sencilla, documento cada cambio y compruebo el resultado con indicadores fiables. As\u00ed aprovecho las ventajas del hardware NUMA sin innecesarios <strong>Riesgos<\/strong> asumir.<\/p>","protected":false},"excerpt":{"rendered":"<p>Descubre c\u00f3mo el equilibrio NUMA influye en el rendimiento de Linux en el hardware de servidores modernos y cu\u00e1ndo conviene desactivar o mantener activada esta funci\u00f3n. Tema central: equilibrio NUMA.<\/p>","protected":false},"author":1,"featured_media":21096,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21103","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":"161","_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":"numa balancing","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":"21096","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21103","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=21103"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/21096"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=21103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=21103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=21103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}