Um hardware que gera muitas interrupções monopoliza uma CPU?

0

Digamos que minha interface de rede esteja recebendo muitos pacotes e eu tenha um processador de núcleo único.

O que impede (se alguma coisa) interromper o kernel e monopolizar a CPU (metade superior após a metade superior)?

    
por Lem0n 30.04.2018 / 20:08

1 resposta

1

Se houvesse muito trabalho em uma metade inferior , na forma de um softirq: ksoftirqd, que é executado como um encadeamento do kernel e, portanto, recebe apenas sua alocação "justa" da CPU v.s. outros processos. Com uma correção recente por volta de 2016, especificamente por causa do caso de rede que você mencionou.

link

Acho que a metade superior não precisa ser reativada até que o softirq processe todos os pacotes conhecidos. No entanto, isso pode ser específico para o NAPI. Você pode ver por exemplo em artigos anteriores sobre o NAPI da LWN.net.

link

link

link

A driver MAY continue using the old 2.4 technique for interfacing to the network stack and not benefit from the NAPI changes. NAPI additions to the kernel do not break backward compatibility. NAPI, however, requires the following features to be available:

A) DMA ring or enough RAM to store packets in software devices.

B) Ability to turn off interrupts or maybe events that send packets up the stack.

- link

    
por 30.04.2018 / 20:17