O sistema não consegue lidar com interrupções suaves, mas com tempo ocioso?

1

Eu tenho uma constante de 5% e mais tempo de CPU gasto no manuseio de interrupções suaves. Doe para isso, o ksoftirqd está rodando quase constantemente, mas está usando uma quantidade muito pequena de CPU (menos de 1%).

No entanto, independentemente dessa carga pesada, ainda há uma porcentagem bastante alta de tempo ocioso (30% ou mais) (esse é o valor top para ocioso ou o ocioso de mpstat ).

Alguns antecedentes (No entanto, gostaria de uma resposta conceitual, não uma que resolva o problema no meu sistema). O sistema é usado para roteamento ( echo 1 > /proc/sys/net/ipv4/ip_forward ) e NAT com iptables e executa aplicativos de espaço de usuário adicionais não relacionados à rede. Além disso, a média de carga é sempre superior a 1 (é um processador de núcleo único) (esse é o valor Carregar média de top ou a saída de sar -q ).

O que está impedindo o sistema de usar o tempo ocioso para evitar que a manipulação de interrupções suaves seja perdida?

Eu esperaria ver o tempo ocioso (id in top) ser usado para servir interrupções de software (si no topo) e não ter as tarefas de falha do processador e ficar ocioso ao mesmo tempo.

    
por TheMeaningfulEngineer 22.12.2014 / 15:35

1 resposta

2

Não há carga pesada no seu sistema.

As interrupções são tratadas corretamente, assim como seu roteamento e seu aplicativo. Se não fosse assim, o seu sistema não teria 30% de inatividade. (De qualquer forma, onde você vê isso?)

Usar um sistema pequeno para muitas coisas diferentes simultaneamente nem sempre significa uma sobrecarga, especialmente se não houver muitos dados para o NAT. Se suas interfaces de rede estão trabalhando com DMA (o que é muito provável), então seus manipuladores de interrupção não estão nem mesmo fazendo uma cópia de bloco único nos kernels atuais.

Além disso, você está carregando seu sistema de maneira muito diferente (enquanto o chip da placa de rede está falando com o dma, seu aplicativo pode funcionar).

O único grande problema pode estar no seu sistema a grande proporção dos comutadores de tarefas. É o maior problema dos servidores semelhantes, de núcleo único, multiuso e maravilhosos. Mas no seu caso, isso causou uma carga pesada no sistema, o que não acontece.

Fiquei feliz em estender esta resposta se você explicasse, de onde vem essa coisa "30% ociosa". Você diz que a carga do sistema é sempre maior que 1.

    
por 11.01.2015 / 02:19