O que acontecerá se uma CPU explodir até 100% de utilização em uma infra-estrutura de SMP?

3

Eu tenho um servidor web que tem 4 CPUs. De alguma forma, ele encontrou perda de pacotes intermitentemente. Finalmente, movemos todos os aplicativos e dados para outro sistema que possui 8 CPUs. Fizemos isso porque descobrimos que nada estava errado, exceto um fenômeno em que a utilização média da CPU subiu para 80%.

Durante a solução de problemas. Eu verifiquei o arquivo / proc / interrupts e as interrupções foram corrigidas para a CPU 0. O "mpstat -p ALL" também foi emitido para ver a utilização de cada CPU. E nenhum deles foi de 100% no momento em que os verificamos.

Tendo dito que apenas a utilização média da CPU aumentou para 100%, mas qualquer uma delas pode ter um pico para 100%, já que não usamos o sistema de monitoramento para reunir a utilização da CPU regularmente. Em vez disso, foi verificado usando o comando. Depois de mudar para um novo sistema com mais CPUs, a perda de pacotes não aconteceu mais. As seguintes questões me ocorrem:

  1. Se a utilização de uma das CPUs no sistema quad-core acontecer 100%, e está sendo corrigido para a interrupção da interrupção da NIC. O kernel agendará outra CPU que não seja muito ocupada para lidar com NIC interromper em seu lugar?
  2. A perda de pacotes foi resolvida depois de adicionar mais CPU para o sistema, é isso porque quanto mais CPUs o sistema tem, menor a probabilidade a utilização da CPU ocupada pela interrupção da NIC sobe para 100%?

  3. A adição de mais CPUs ao sistema resulta em menos mudança de contexto e portanto, menos sobrecarga do sistema?

por Jepsenwan 24.06.2017 / 10:38

1 resposta

4

If the utilization of one of the CPU in the quad-core system happens to be 100%, and it is being fixed to the interrupt to the NIC interrupt. Will the kernel schedule another CPU that is not very busy to handle the NIC interrupt in its place?

Normalmente, não. A interrupção tem prioridade de qualquer maneira, então não há necessidade de mover a interrupção da NIC.

The packet loss got resolved after adding more CPU for the system, is this because the more CPUs the system have, the smaller probability the utilization of the CPU occupied by the NIC interrupt goes up to 100%?

Não. Por que isso importaria? A interrupção, como o próprio nome indica, interrompe a CPU e faz com que ela atenda a interrupção.

Does adding more CPUs to the system result in less context switch and therefore less system overhead?

Poderia, mas é improvável que isso faça alguma diferença. Mais CPUs só irão reduzir switches de contexto não forçados (aqueles que o sistema decide tomar, mesmo que não seja necessário) e ninguém projeta um sistema tão mal que os switches de contexto não-efetivos tenham um impacto significativo no desempenho.

Especulando apenas pelo que você disse, eu suspeitava que sob algumas condições em que o sistema estava sob alta carga, os pacotes foram perdidos porque a placa de rede não era serviços com rapidez suficiente. Provavelmente, isso não ocorre porque a interrupção não está sendo atendida com rapidez suficiente, mas o outro trabalho associado ao tráfego de rede não está sendo completamente rápido o suficiente para acompanhar a taxa de pacote. Isso inclui, por exemplo, todas as operações exigidas pelo protocolo TCP. Se isso fizer o backup, os pacotes serão descartados em algum lugar.

    
por 24.06.2017 / 11:31