Red Hat Training
A Red Hat training course is available for RHEL 8
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
- Verifique quais dispositivos correspondem às solicitações de interrupção que você deseja configurar.
Encontre a especificação de hardware para sua plataforma. Verifique se o chipset em seu sistema suporta interrupções de distribuição.
- 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.
- 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.
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 aSetting 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çãonox2apic
à linha de comando do kernel na configuraçãobootloader
.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.
-
Se seu sistema usa um modo diferente de
-
Calcule o
smp_affinity mask
. Para mais informações sobre como calcular osmp_affinity mask
, ver Seção 20.5.2, “Colocando a máscara smp_affinity”.