• Nenhum resultado encontrado

Opcional: Ajuste a afinidade da CPU para os fios do kernel write-back bdi-flush para o núcleo de manutenção da casa:

No documento Red Hat Enterprise Linux 8 (páginas 173-177)

Pré-requisitos

SCHED_OTHER

5. Opcional: Ajuste a afinidade da CPU para os fios do kernel write-back bdi-flush para o núcleo de manutenção da casa:

echo 1 > /sys/bus/workqueue/devices/writeback/cpumask Etapas de verificação

Quando o sistema for reinicializado, verifique se dynticks está habilitado: # grep dynticks var/log/dmesg

[ 0.000000] NO_HZ: Full dynticks CPUs: 2-5,8-11

Verificar se a configuração dinâmica sem tickless está funcionando corretamente:

# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1 Aqui, stress é um programa que gira sobre a CPU para 1 second.

Um possível substituto para stress é um roteiro que executa: while :; do d=1; done

A configuração padrão do temporizador do kernel mostra 1000 ticks em uma CPU ocupada: # perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1

1000 irq_vectors:local_timer_entry

Com o núcleo dinâmico sem tickless configurado, você deve ver 1 tick em seu lugar: # perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1 1 irq_vectors:local_timer_entry

Recursos adicionais

Para mais informações, consulte as páginas de homem de perf e cpuset.

Tudo sobre nohz_full kernel parâmetro Red Hat Knowledgebase artigo .

Como verificar a lista de "isolados" e "nohz_full" Informações da CPU do sysfs? Artigo da Red Hat Knowledgebase.

20.5. AJUSTE DE SISTEMAS DE AFINIDADE DE INTERRUPÇÃO

Um pedido de interrupção ou IRQ é um sinal para atenção imediata enviado de uma peça de hardware para um processador. A cada dispositivo de um sistema é atribuído um ou mais números IRQ que permitem que ele envie interrupções únicas. Quando as interrupções são ativadas, um processador que recebe uma solicitação de interrupção pausa imediatamente a execução do tópico de aplicação atual, a fim de atender à solicitação de interrupção.

Como a interrupção interrompe a operação normal, altas taxas de interrupção podem degradar severamente o desempenho do sistema. É possível reduzir o tempo de interrupção configurando a afinidade da interrupção ou enviando uma série de interrupções de menor prioridade em um lote (coalescendo uma série de interrupções).

Os pedidos de interrupção têm uma propriedade de afinidade associada, smp_affinity, que define os processadores que tratam do pedido de interrupção. Para melhorar o desempenho da aplicação, atribuir afinidade de interrupção e afinidade de processo ao mesmo processador, ou processadores no mesmo núcleo. Isto permite que as linhas de interrupção e de aplicação especificadas compartilhem as linhas de cache.

Em sistemas que suportam a direção de interrupção, modificando a propriedade smp_affinity de um pedido de interrupção configura o hardware para que a decisão de fazer uma interrupção com um determinado processador seja tomada no nível do hardware sem intervenção do kernel.

20.5.1. O balanceamento é interrompido manualmente

Se sua BIOS exporta sua topologia NUMA, o serviço irqbalance pode servir automaticamente as solicitações de interrupção no nó que é local para o serviço de solicitação de hardware.

Procedimento

1. Verifique quais dispositivos correspondem às solicitações de interrupção que você deseja configurar.

2. Encontre a especificação de hardware para sua plataforma. Verifique se o chipset em seu sistema suporta interrupções de distribuição.

a. Se isso acontecer, você pode configurar a interrupção da entrega como descrito nos passos seguintes. Além disso, verifique qual algoritmo seu chipset usa para equilibrar as

interrupções. Algumas BIOSes têm opções para configurar a interrupção da entrega. b. Caso contrário, seu chipset sempre roteia todas as interrupções para uma única CPU

estática. Você não pode configurar qual CPU é utilizada.

3. Verifique qual modo de Controlador de Interrupção Programável Avançado (APIC) está em uso em seu sistema:

$ journalctl --dmesg | grep APIC Aqui,

Se seu sistema usa um modo diferente de flat, você pode ver uma linha similar a Setting APIC routing to physical flat.

Se você não puder ver tal mensagem, seu sistema usa o modo flat.

Se seu sistema usa o modo x2apic, você pode desativá-lo adicionando a opção nox2apic à linha de comando do kernel na configuração bootloader.

Somente o modo flat não-físico (flat) suporta a distribuição de interrupções para várias CPUs. Este modo está disponível somente para sistemas que tenham até 8 CPUs. 4. Calcule o smp_affinity mask. Para mais informações sobre como calcular o smp_affinity

mask, ver Seção 20.5.2, “Colocando a máscara smp_affinity”.

20.5.2. Colocando a máscara smp_affinity

O valor smp_affinity é armazenado como uma máscara de bit hexadecimal representando todos os processadores do sistema. Cada bit configura uma CPU diferente. O bit menos significativo é a CPU 0. O valor padrão da máscara é f, o que significa que uma solicitação de interrupção pode ser tratada em qualquer processador do sistema. Ajustar este valor para 1 significa que apenas o processador 0 pode lidar com a interrupção.

Procedimento

1. Em binário, use o valor 1 para CPUs que lidam com as interrupções. Por exemplo, para definir CPU 0 e CPU 7 para lidar com as interrupções, use 0000000010000001 como o código binário: Tabela 20.3. Bits binários para CPUs

C P U 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bi ná ri o 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1

2. Converter o código binário em hexadecimal:

Por exemplo, para converter o código binário usando Python: >>> hex(int('0000000010000001', 2))

'0x81'

Em sistemas com mais de 32 processadores, você deve delimitar os valores smp_affinity para grupos discretos de 32 bits. Por exemplo, se você quiser apenas os primeiros 32 processadores de um sistema com 64 processadores para atender a uma solicitação de interrupção, use 0xffffffff,00000000.

3. O valor da afinidade de interrupção para uma determinada solicitação de interrupção é armazenado no arquivo /proc/irq/irq_number/smp_affinity associado. Coloque a máscara smp_affinity neste arquivo:

# máscara echo > /proc/irq/irq_number/smp_affinity

20.5.3. Recursos adicionais

CAPÍTULO 21. CONFIGURAÇÃO DA RHEL PARA OTIMIZAR O

No documento Red Hat Enterprise Linux 8 (páginas 173-177)