Minimizando as interrupções de hardware

3

Estou usando um kernel Linux modificado como um SO em tempo real, em um sistema que tem uma arquitetura como esta:

CPU1 e CPU2 possuem 8 núcleos cada. Tenho 4 processos que precisam ser executados com jitter mínimo, então o que devo fazer (em nível de sistema operacional e nível de configuração de hardware) para minimizar o efeito de interrupções de hardware nesses processos ?

Isso é o que estou fazendo agora:

  1. Vincule os processos a 1 núcleo cada na CPU2.
  2. Desative o controlador SAS2208 e conecte o disco de inicialização apenas ao controlador SATA na C602 PCH.

Parece que posso desativar a maioria dos recursos da PCH C602 para reduzir as interrupções de hardware na CPU1, estou certo de que isso é desnecessário se isolar os processos na CPU2 (ou seja, sem acesso à memória remota dos DIMMs # 1-1 para # 1-4 e sem comunicação entre processos entre CPU1 e CPU2)?

    
por elleciel 16.04.2014 / 21:20

1 resposta

3

Como em qualquer ajuste de desempenho, não há regras absolutas. Devido à natureza do mesmo, existem algumas regras que você pode fazer com qualificação suficiente, mas apenas algumas. Então, tenha isso em mente. Como você deve controlar as interrupções de hardware realmente depende de como sua carga de trabalho se comporta

Para sua pergunta, você também precisa controlar onde as interrupções serão enviadas. Sempre haverá algum tipo de interrupção, mas você pode configurar a afinidade de IRQ para enviar -los para CPU1, deixando CPU2 disponível para processamento de dados. Você pode fazer o mesmo com as opções de direção de pacotes.

Como dito anteriormente, é difícil dar-lhe regras absolutas, mas reduzir o número de interrupções de hardware desnecessárias é um bom começo, mas brincar com afinidade de IRQ e afinidade de TX / RX também pode resultar em uma vantagem . Também é importante não se fixar em uma determinada métrica e esquecer de monitorar o desempenho geral do aplicativo.

    
por 16.04.2014 / 22:01