{"id":19625,"date":"2026-06-02T18:18:36","date_gmt":"2026-06-02T16:18:36","guid":{"rendered":"https:\/\/webhosting.de\/server-process-affinity-numa-awareness-hosting-ressourcentuning\/"},"modified":"2026-06-02T18:18:36","modified_gmt":"2026-06-02T16:18:36","slug":"servidor-processo-afinidade-numa-sensibilizacao-alojamento-ressourcentuning","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/server-process-affinity-numa-awareness-hosting-ressourcentuning\/","title":{"rendered":"Otimizar a afinidade dos processos do servidor e a sensibiliza\u00e7\u00e3o para NUMA no alojamento"},"content":{"rendered":"<p>Aumento o desempenho do servidor com <strong>Afinidade de processos<\/strong> e a consci\u00eancia NUMA de uma forma direcionada e, assim, organizar de forma \u00f3ptima as threads, os n\u00facleos e a mem\u00f3ria em rela\u00e7\u00e3o uns aos outros. Isto permite-me reduzir as lat\u00eancias, aumentar o d\u00e9bito e obter tempos de resposta consistentes em ambientes de alojamento com muitas aplica\u00e7\u00f5es.<\/p>\n\n<h2>Pontos centrais<\/h2>\n\n<p>Antes de efetuar quaisquer defini\u00e7\u00f5es espec\u00edficas, esclare\u00e7o os meus objectivos, os padr\u00f5es de carga de trabalho e a topologia de hardware existente. Analiso quais as threads que consomem muita mem\u00f3ria e quais os processos que necessitam de tempos de resposta curtos. Considero quantos n\u00facleos est\u00e3o dispon\u00edveis por n\u00f3 NUMA e quanta RAM local existe. Planeio agrupar os servi\u00e7os n\u00f3 a n\u00f3 para que <strong>Localidade da CPU<\/strong> \u00e9 mantida. Me\u00e7o todas as mudan\u00e7as com refer\u00eancias e monitoriza\u00e7\u00e3o para evitar falsas suposi\u00e7\u00f5es.<\/p>\n<ul>\n  <li><strong>Afinidade<\/strong>Ligar processos a grupos principais<\/li>\n  <li><strong>NUMA<\/strong>Manter a mem\u00f3ria local<\/li>\n  <li><strong>Topologia<\/strong>Escala n\u00f3 a n\u00f3<\/li>\n  <li><strong>Monitoriza\u00e7\u00e3o<\/strong>Acesso remoto: tornar vis\u00edveis os acessos remotos<\/li>\n  <li><strong>Hospedagem<\/strong>Controlar a coloca\u00e7\u00e3o do hipervisor<\/li>\n<\/ul>\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\/06\/serverraum-optimierung-8392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>O que significa Process Affinity no servidor?<\/h2>\n\n<p>Com <strong>Afinidade de processos<\/strong> Eu especifico em quais n\u00facleos da CPU um processo ou thread \u00e9 executado em vez de deixar o sistema operacional decidir livremente. Isso mant\u00e9m o conte\u00fado do cache consistente, o que reduz os erros de cache e as trocas de contexto. Eu fixo os threads para que eles usem seus caches L1\/L2\/L3 de forma eficaz e n\u00e3o saltem entre n\u00facleos. Isso melhora a previsibilidade das lat\u00eancias sob alta carga e garante a utiliza\u00e7\u00e3o uniforme dos n\u00facleos reservados. Para uma introdu\u00e7\u00e3o pr\u00e1tica, este guia para <a href=\"https:\/\/webhosting.de\/pt\/servidor-cpu-affinity-hosting-otimizacao-kernelaffinity\/\">Afinidade da CPU no alojamento<\/a>, porque o utilizo para comparar as variantes t\u00edpicas de fixa\u00e7\u00e3o.<\/p>\n\n<h2>Compreender o NUMA: acesso local vs. remoto<\/h2>\n\n<p><strong>NUMA<\/strong> divide a mem\u00f3ria de trabalho em n\u00f3s, cada um dos quais est\u00e1 intimamente ligado a sockets de CPU espec\u00edficos. Um thread acede mais rapidamente \u00e0 RAM local do que \u00e0 mem\u00f3ria remota noutros n\u00f3s. Esta assimetria tem um impacto significativo em cargas de trabalho reais, especialmente com muitos n\u00facleos e uma grande quantidade de RAM. Portanto, eu atribuo threads e seus acessos \u00e0 mem\u00f3ria a um n\u00f3 comum para reduzir lat\u00eancias e aumentar a largura de banda. Se quiser aprofundar a topologia, consulte as dicas pr\u00e1ticas em <a href=\"https:\/\/webhosting.de\/pt\/numa-nodes-alojamento-de-servidores-grandes-sistemas-serverboost\/\">N\u00f3s NUMA no servidor<\/a> e, em seguida, mede os efeitos na vida quotidiana.<\/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\/06\/server_optimierung_meeting_5492.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Consci\u00eancia NUMA no sistema operativo e na aplica\u00e7\u00e3o<\/h2>\n\n<p>Eu ativo <strong>Consci\u00eancia NUMA<\/strong> no sistema operativo, hipervisor e aplica\u00e7\u00e3o para que a mem\u00f3ria seja alocada localmente. Sempre que poss\u00edvel, mantenho as threads de uma inst\u00e2ncia nos n\u00facleos do mesmo n\u00f3 NUMA, em vez de as distribuir pelos n\u00f3s. Prefiro criar grandes heaps ou buffers na RAM local para que os acessos remotos dispendiosos continuem a ser raros. Se uma aplica\u00e7\u00e3o tiver v\u00e1rios workers, eu estruturo-os n\u00f3 a n\u00f3 em pools para evitar interfer\u00eancias. Isso cria uma aloca\u00e7\u00e3o clara de CPU e mem\u00f3ria, o que reduz visivelmente os tempos de resposta.<\/p>\n\n<h2>Intera\u00e7\u00e3o entre Affinity e NUMA<\/h2>\n\n<p><strong>Afinidade<\/strong> sem agendamento NUMA desperdi\u00e7a potencial se a mem\u00f3ria estiver localizada em n\u00f3s remotos. Da mesma forma, a observa\u00e7\u00e3o NUMA \u00e9 de pouca utilidade se o agendamento mover as threads com frequ\u00eancia. Por isso, as threads s\u00e3o associadas a n\u00facleos de um n\u00f3 espec\u00edfico e a aloca\u00e7\u00e3o de mem\u00f3ria local \u00e9 feita em paralelo. Se eu escalar a aplica\u00e7\u00e3o, primeiro preencho um n\u00f3 antes de incluir outros n\u00f3s. Este acoplamento de fixa\u00e7\u00e3o de n\u00facleos e pol\u00edtica de mem\u00f3ria gera perfis de lat\u00eancia constantes sob carga.<\/p>\n\n<h2>Afina\u00e7\u00e3o de hardware e firmware (UEFI\/BIOS)<\/h2>\n\n<p>Para que o Affinity e o NUMA funcionem, defino a base no firmware para ser est\u00e1vel. Prefiro modos de desempenho consistentes em vez de op\u00e7\u00f5es agressivas de economia de energia, para que as flutua\u00e7\u00f5es de clock e lat\u00eancia sejam minimizadas. Pontos importantes que eu verifico:<\/p>\n<ul>\n  <li>Perfil de desempenho: Pot\u00eancia\/desempenho m\u00e1ximos em vez de equilibrados; restringir os estados C baixos se a lat\u00eancia for mais importante do que a efici\u00eancia.<\/li>\n  <li>Estrat\u00e9gia de turbo\/boost: boost determin\u00edstico a pedido para evitar a flutua\u00e7\u00e3o dos n\u00facleos P.<\/li>\n  <li>SMT\/Hyper-Threading: Teste dependendo da carga de trabalho - para SLAs de lat\u00eancia dif\u00edcil, costumo fixar threads cr\u00edticos em n\u00facleos f\u00edsicos e separar os irm\u00e3os SMT.<\/li>\n  <li>Intercala\u00e7\u00e3o de mem\u00f3ria: Desactivada para otimiza\u00e7\u00e3o NUMA de modo a que os n\u00f3s permane\u00e7am claramente delimitados.<\/li>\n  <li>Canais de mem\u00f3ria: Configura\u00e7\u00e3o sim\u00e9trica das ranhuras DIMM por n\u00f3 para m\u00e1xima largura de banda.<\/li>\n<\/ul>\n\n<h2>Caminho de configura\u00e7\u00e3o: An\u00e1lise para fixa\u00e7\u00e3o<\/h2>\n\n<p>Come\u00e7o com uma grava\u00e7\u00e3o de topologia, normalmente com <strong>lscpu<\/strong>, numactl -hardware ou hwloc. Em seguida, defino o n\u00famero necess\u00e1rio de n\u00facleos para cada servi\u00e7o e atribuo-os a um n\u00f3. Eu implemento o pinning com taskset ou via op\u00e7\u00f5es do systemd para que a atribui\u00e7\u00e3o permane\u00e7a reproduz\u00edvel. Durante o teste, eu ajusto o tamanho dos grupos de n\u00facleos at\u00e9 que a lat\u00eancia e a taxa de transfer\u00eancia estejam em uma boa propor\u00e7\u00e3o. Certifico-me de que nenhum servi\u00e7o com uso intensivo de CPU compartilha o mesmo grupo de n\u00facleos e, portanto, desloca os caches uns dos outros.<\/p>\n\n<p>No Linux eu gosto de definir a pol\u00edtica de afinidade e mem\u00f3ria declarativamente via cgroups (v2): Eu defino cpuset.cpus e cpuset.mems de acordo com o n\u00f3 e inicio servi\u00e7os com par\u00e2metros systemd como CPUAffinity= e NUMAMask=. Eu mantenho pools separados para processos batch ou secund\u00e1rios para que eles n\u00e3o entrem nos n\u00facleos da camada cr\u00edtica de lat\u00eancia. Para trabalhos recorrentes, planeio janelas de arranque exactas nas quais os n\u00facleos est\u00e3o livres.<\/p>\n\n<h2>Afinidade de interrup\u00e7\u00f5es e E\/S<\/h2>\n\n<p>N\u00e3o s\u00e3o apenas os t\u00f3picos de aplica\u00e7\u00f5es que precisam de localidade - tamb\u00e9m <strong>Interrup\u00e7\u00f5es<\/strong> e caminhos de E\/S que organizo perto do n\u00f3:<\/p>\n<ul>\n  <li>Rede: vincule as filas RX\/TX de uma NIC aos n\u00facleos do mesmo n\u00f3 NUMA (configure RSS\/XPS) para que o processamento de pacotes e os threads de aplicativos compartilhem o cache e a localidade da RAM.<\/li>\n  <li>Armazenamento: fixar filas NVMe e threads IO por n\u00f3; verificar a distribui\u00e7\u00e3o de filas para blk-mq para que os volumes quentes n\u00e3o cruzem os n\u00f3s.<\/li>\n  <li>irqbalance: configurar especificamente ou desativar para filas cr\u00edticas e definir manualmente atrav\u00e9s de smp_affinity.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/06\/server-optimize-numa-awareness-2381.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Utiliza\u00e7\u00e3o orientada das funcionalidades do sistema operativo<\/h2>\n\n<p>Utilizo deliberadamente as funcionalidades do kernel para perfis de lat\u00eancia rigorosos:<\/p>\n<ul>\n  <li>isolcpus\/nohz_full\/rcu_nocbs: Desacopla n\u00facleos do agendamento geral, minimiza a carga de tick e realoca callbacks RCU - ideal para threads de alto desempenho.<\/li>\n  <li>Pol\u00edticas do programador: Utilizar SCHED_FIFO\/RR com modera\u00e7\u00e3o para componentes em tempo real; caso contr\u00e1rio, utilizar CFS com afinidade pr\u00f3xima.<\/li>\n  <li>Auto NUMA Balancing: Frequentemente desativado para cargas de trabalho estritamente fixas, para que o kernel n\u00e3o mude a mem\u00f3ria.<\/li>\n  <li>Transparent Huge Pages: Na maioria das vezes definido para madvise e usar Huge Pages expl\u00edcitas para heaps realmente grandes para reduzir os erros de TLB.<\/li>\n<\/ul>\n\n<h2>Pol\u00edtica de armazenamento consciente de NUMA<\/h2>\n\n<p>Com <strong>numactl<\/strong> Imponho a aloca\u00e7\u00e3o preferencial de mem\u00f3ria local ou uso pol\u00edticas como preferred e interleave. Sempre que poss\u00edvel, mantenho grandes estruturas na mem\u00f3ria, como pools de buffer de banco de dados, dentro de um n\u00f3. Se a necessidade de mem\u00f3ria aumentar, observo o aumento dos acessos remotos e reajo segmentando ou fragmentando. Os conhecimentos pr\u00e1ticos sobre o tuning fornecem-me diretrizes para <a href=\"https:\/\/webhosting.de\/pt\/numa-balanceamento-servidor-memoria-otimizacao-hardware-numaflux\/\">Balanceamento NUMA<\/a>, que depois confirmo com testes de carga. Isto mant\u00e9m o tempo de acesso \u00e0 mem\u00f3ria baixo e previs\u00edvel.<\/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\/06\/server_optimierung_tech_office_4821.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>T\u00e9cnicas de armazenamento: P\u00e1ginas enormes, heaps e recolha de lixo<\/h2>\n\n<p>A gest\u00e3o da mem\u00f3ria determina frequentemente as lat\u00eancias do P99. Eu uso p\u00e1ginas enormes onde heaps grandes e de longa dura\u00e7\u00e3o dominam (por exemplo, buffers de BD, heaps da JVM). Isso reduz os erros de TLB e os page walks. Para cargas de trabalho JVM, presto aten\u00e7\u00e3o ao tamanho do heap por n\u00f3 e ativo a otimiza\u00e7\u00e3o NUMA para que as threads GC e os heaps permane\u00e7am locais. Para .NET e Go, planeio GCs e pools de goroutine para que n\u00e3o preencham n\u00facleos entre n\u00f3s de forma descontrolada. Nas bases de dados, divido grandes pools de buffers em segmentos locais nos n\u00f3s ou executo v\u00e1rias inst\u00e2ncias mais pequenas por n\u00f3.<\/p>\n\n<h2>Alojamento pr\u00e1tico: cargas de trabalho t\u00edpicas<\/h2>\n\n<p>Bases de dados, caches e grandes servidores de aplica\u00e7\u00f5es reagem de forma sens\u00edvel a <strong>Localidade da CPU<\/strong> e lat\u00eancia de mem\u00f3ria. Uma VM distribu\u00edda por v\u00e1rios n\u00f3s NUMA aumenta os caminhos de computa\u00e7\u00e3o e de mem\u00f3ria e torna as consultas ou chamadas de API mais lentas. Por isso, coloco as VMs de modo que suas vCPUs sejam atribu\u00eddas a um n\u00f3 f\u00edsico e a mem\u00f3ria permane\u00e7a l\u00e1. Os pools de cont\u00eaineres recebem conjuntos consistentes de CPUs para que os trabalhadores n\u00e3o fiquem pulando entre os n\u00f3s. Este cuidado compensa especialmente para servi\u00e7os de com\u00e9rcio eletr\u00f3nico e API com elevado paralelismo.<\/p>\n\n<h2>Estrat\u00e9gias de aplica\u00e7\u00f5es com granularidade fina<\/h2>\n\n<p>Ao n\u00edvel da aplica\u00e7\u00e3o, desacoplamos os n\u00f3s para manter a localidade:<\/p>\n<ul>\n  <li>Piscinas de trabalho: Um pool por n\u00f3 NUMA, cada um com uma fila local para evitar a comunica\u00e7\u00e3o entre n\u00f3s.<\/li>\n  <li>Sharding: Manter os dados e as sess\u00f5es locais nos n\u00f3s; selecionar o hashing de modo a que os shards quentes n\u00e3o atravessem v\u00e1rios n\u00f3s.<\/li>\n  <li>Caches: Replicadas em vez de centralizadas; os leitores preferem c\u00f3pias locais de n\u00f3s.<\/li>\n  <li>Fixa\u00e7\u00e3o de threads em tempos de execu\u00e7\u00e3o: Para pilhas de rede (por exemplo, Netty) e clientes de BD, associar trabalhadores a n\u00facleos fixos, observar a proximidade de IRQ.<\/li>\n<\/ul>\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\/06\/devdesk_serveroptimierung_4832.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitoriza\u00e7\u00e3o e resolu\u00e7\u00e3o de problemas<\/h2>\n\n<p>Um controlo sensato mostra mais do que a utiliza\u00e7\u00e3o global da capacidade, porque <strong>NUMA<\/strong>-Os efeitos est\u00e3o ocultos nos valores detalhados dos n\u00f3s. Eu monitorizo a carga da CPU por n\u00facleo e n\u00f3, a utiliza\u00e7\u00e3o da mem\u00f3ria por n\u00f3 e as taxas de acesso remoto. Se n\u00facleos individuais transbordam enquanto outros permanecem sem uso, isso indica configura\u00e7\u00f5es de afinidade ruins. Se a RAM de um n\u00f3 est\u00e1 cheia enquanto outro tem uma reserva, tenho de ajustar a pol\u00edtica de mem\u00f3ria ou a coloca\u00e7\u00e3o. Utilizo estes sinais para documentar objetivamente os estrangulamentos e derivar as pr\u00f3ximas altera\u00e7\u00f5es.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>M\u00e9tricas<\/th>\n      <th>Nota\/Sintoma<\/th>\n      <th>Causa t\u00edpica<\/th>\n      <th>A\u00e7\u00e3o r\u00e1pida<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>CPU por n\u00facleo<\/strong><\/td>\n      <td>Alguns n\u00facleos permanentemente elevados<\/td>\n      <td>Fixa\u00e7\u00e3o incorrecta<\/td>\n      <td>Redistribuir grupos de base<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>RAM por n\u00f3<\/strong><\/td>\n      <td>Um n\u00f3 no limite<\/td>\n      <td>Mem\u00f3ria n\u00e3o local<\/td>\n      <td>set numactl preferred<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Taxa remota<\/strong><\/td>\n      <td>Acesso remoto elevado<\/td>\n      <td>VM\/contentor atrav\u00e9s de n\u00f3s<\/td>\n      <td>Conjunto de vCPUs\/CPUs<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Mudan\u00e7as de contexto<\/strong><\/td>\n      <td>Lat\u00eancia irregular<\/td>\n      <td>Caminhada no fio<\/td>\n      <td>Afinidade de pinos mais dura<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Anti-padr\u00f5es e obst\u00e1culos t\u00edpicos<\/h2>\n\n<p>Eu evito limites globais de CPU, independentemente do NUMA, porque eles alocam n\u00facleos entre n\u00f3s. Al\u00e9m disso, \u201eUma grande VM\u201c com muitas vCPUs raramente escala linearmente - inst\u00e2ncias m\u00faltiplas e locais de n\u00f3s s\u00e3o melhores. P\u00e1ginas enormes transparentes no modo always \u00e0s vezes causam picos de falhas de p\u00e1gina; madvise mais p\u00e1ginas enormes direcionadas \u00e9 mais previs\u00edvel. irqbalance rodando descontroladamente dilui a localidade de I\/O. E: Fixar muito forte sem n\u00facleos de buffer pode sufocar a manuten\u00e7\u00e3o e o sideload - eu sempre planejo alguns n\u00facleos livres por n\u00f3.<\/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\/06\/serverprozessoptimierung-4812.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tornar mensur\u00e1veis os efeitos do desempenho<\/h2>\n\n<p>Me\u00e7o os efeitos de <strong>Afinidade<\/strong> e NUMA muda sempre com benchmarks reproduz\u00edveis. As compara\u00e7\u00f5es antes e depois com um conjunto de dados id\u00eantico mostram as melhorias de forma transparente. Combino testes sint\u00e9ticos com perfis de carga realistas para que as optimiza\u00e7\u00f5es d\u00eaem frutos na utiliza\u00e7\u00e3o quotidiana. Os valores-chave dos resultados, como as lat\u00eancias P95 e P99, s\u00e3o frequentemente mais significativos do que os valores m\u00e9dios. Isto permite-me validar decis\u00f5es e reconhecer efeitos secund\u00e1rios numa fase inicial.<\/p>\n\n<h2>Virtualiza\u00e7\u00e3o e contentores<\/h2>\n\n<p>Nas configura\u00e7\u00f5es de hipervisor, utilizo <strong>vNUMA<\/strong>, para que a VM convidada entenda a topologia f\u00edsica. Eu empacoto as vCPUs de uma VM em um n\u00f3 fisicamente correspondente para minimizar o acesso remoto. Para cont\u00eaineres, defino solicita\u00e7\u00f5es e limites de CPU para que os conjuntos de CPU permane\u00e7am consistentes e o gerenciador de topologia respeite a localiza\u00e7\u00e3o do n\u00f3. Eu s\u00f3 escalonei VMs grandes com muitas vCPUs entre n\u00f3s se o aplicativo permitir a segmenta\u00e7\u00e3o interna. Avalio cada posicionamento com base na lat\u00eancia, na taxa de transfer\u00eancia e na utiliza\u00e7\u00e3o por n\u00f3.<\/p>\n\n<h2>Orquestra\u00e7\u00e3o: Cgroups, Kubernetes e outros.<\/h2>\n\n<p>Em containers, eu confio em classes garantidas ou burstable com conjuntos de CPU est\u00e1veis e atribui\u00e7\u00e3o de mems. O gerenciador de topologia no modo \u201esingle-numa-node\u201c ajuda a manter os pods locais nos n\u00f3s. Para partes em tempo real de longa dura\u00e7\u00e3o, eu uso o gerenciador de CPU no modo \u201eest\u00e1tico\u201c para manter os n\u00facleos exclusivos. Eu programo HugePages como solicita\u00e7\u00f5es\/limites e agrupo pods por fun\u00e7\u00e3o de carga de trabalho para que os n\u00f3s n\u00e3o sejam sobrecarregados de forma heterog\u00eanea. Importante: mantenha os r\u00f3tulos dos n\u00f3s adequadamente para que as regras de posicionamento n\u00e3o quebrem a localidade de forma n\u00e3o intencional.<\/p>\n\n<h2>Papel do fornecedor de alojamento<\/h2>\n\n<p>Um bom fornecedor oferece transpar\u00eancia <strong>Topologia NUMA<\/strong>, op\u00e7\u00f5es de afinidade e informa\u00e7\u00f5es sobre as m\u00e9tricas dos n\u00f3s. Certifico-me de que o hipervisor e a orquestra\u00e7\u00e3o levam a s\u00e9rio o reconhecimento de NUMA e que a coloca\u00e7\u00e3o de vCPU permanece control\u00e1vel. O monitoramento que fornece cotas de CPU, RAM e remotas por n\u00f3 tamb\u00e9m \u00e9 importante. Isto permite-me decidir por mim pr\u00f3prio o grau de rigor com que fa\u00e7o o pin e como defino as pol\u00edticas de mem\u00f3ria. Este controlo torna as cargas de trabalho exigentes fi\u00e1veis e previs\u00edveis.<\/p>\n\n<h2>Modelo operacional: introduzir altera\u00e7\u00f5es com seguran\u00e7a<\/h2>\n\n<p>Introduzo pol\u00edticas de pinning e NUMA de forma iterativa: primeiro num n\u00f3, com passos de revers\u00e3o claramente definidos. Eu documento a topologia, as atribui\u00e7\u00f5es e os par\u00e2metros do kernel para garantir a reprodutibilidade. Para os lan\u00e7amentos, uso tr\u00e1fego can\u00e1rio, monitorizo P95\/P99, trocas de contexto e taxas remotas durante pelo menos uma fase de carga completa e s\u00f3 depois fa\u00e7o uma implementa\u00e7\u00e3o mais alargada. Isso mant\u00e9m as melhorias est\u00e1veis e os riscos gerenci\u00e1veis.<\/p>\n\n<h2>Melhores pr\u00e1ticas, aplicadas de forma compacta<\/h2>\n\n<p>Come\u00e7o cada otimiza\u00e7\u00e3o com uma <strong>An\u00e1lise topol\u00f3gica<\/strong> e documentar a atribui\u00e7\u00e3o do n\u00facleo e do n\u00f3. Em seguida, divido as cargas de trabalho de modo a que a base de dados, a cache e o servidor de aplica\u00e7\u00f5es recebam recursos de n\u00f3 separados. Eu identifico os processos cr\u00edticos e dou prioridade \u00e0 mem\u00f3ria local antes de ajustar o tamanho do grupo. Acompanho cada ajuste com benchmarks e m\u00e9tricas de n\u00f3s para ver claramente os efeitos. Para o crescimento, planeio n\u00f3 a n\u00f3 e mantenho as inst\u00e2ncias enxutas em vez de explodir uma inst\u00e2ncia gigante monol\u00edtica.<\/p>\n\n<h2>Resumo e pr\u00f3ximas etapas<\/h2>\n\n<p>Com objectivos espec\u00edficos <strong>Afinidade de processos<\/strong> e uma verdadeira consci\u00eancia NUMA, fa\u00e7o com que as cargas de trabalho no mesmo hardware avancem visivelmente. O posicionamento claro, a aloca\u00e7\u00e3o de mem\u00f3ria local e a medi\u00e7\u00e3o consistente dos resultados s\u00e3o cruciais. Agrupar VMs e contentores perto do n\u00f3 reduz a lat\u00eancia e aumenta o rendimento. Recomendo iniciar um projeto piloto em um host, testar a afinidade e a pol\u00edtica de mem\u00f3ria e adotar as melhores configura\u00e7\u00f5es. Desta forma, o desempenho aumenta passo a passo sem ter de comprar novos servidores.<\/p>","protected":false},"excerpt":{"rendered":"<p>Saiba como maximizar o desempenho do seu alojamento e tirar o m\u00e1ximo partido da localidade da CPU com o Server Process Affinity e o reconhecimento NUMA.<\/p>","protected":false},"author":1,"featured_media":19618,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-19625","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":"64","_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":"Process Affinity","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":"19618","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/19625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/comments?post=19625"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/19625\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/19618"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=19625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=19625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=19625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}