Não há limite. Depende da coalescência da interrupção, número de pedidos, encadeamentos, processos, tipo de kernel, tipo de relógio, configuração do kernel. É por isso que é usado também como semente para o gerador de números aleatórios.
Hardware: Sunfire v20z, dual Opteron 1Ghz, 2 GB de RAM, 73 GB de 10k rpm scsi.
Existe um limite "razoável" que posso usar no meu software de monitoramento? Atualmente, está com 500 avisos, 1000 críticos.
Qual número de interrupções / s seria melhor usar? Eu sei que isso depende de muitas coisas, mas espero que haja um valor de estádio, então eu não estou escolhendo aleatoriamente números de um chapéu ...
Não há limite. Depende da coalescência da interrupção, número de pedidos, encadeamentos, processos, tipo de kernel, tipo de relógio, configuração do kernel. É por isso que é usado também como semente para o gerador de números aleatórios.
Em meus cartões QLogic Fibre Channel (SAN), obtive minha melhor largura de banda quando atingia cerca de 2.000 interrupções por segundo. Cada cartão tinha duas portas para que cada interrupção fosse atingida 2.000 vezes por segundo.
Em minhas leituras, a coalescência de interrupção é baseada em cada driver e cada motorista pode fazer isso completamente diferente. Por exemplo, aqui estão as instruções sobre como configurar a placa de rede e1000 (Intel PRO / 1000) motorista.
Se um determinado driver não permitir a coalescência, você precisará calcular a taxa ideal como uma função das unidades de trabalho em um período fixo de tempo. Mircea Vutcovici dá o esboço em seus comentários. Considere uma placa de 8 Gb / s (assumindo uma porta).
Buffer Size Intr/sec
256 Kbytes 4,096
128 Kbytes 8,192
16 Kbytes 65,536
512 bytes 2,097,152
Agora, cada dispositivo e controlador tem um número máximo de operações de entrada / saída por segundo que eles podem sustentar. Isso deve ser diretamente proporcional, se não igual, ao número de interrupções por segundo, se meu palpite estiver correto.
Então, quantas interrupções você consegue lidar? Bem, eu iria encontrar o tamanho do buffer ideal para a comunicação que você está executando no seu dispositivo (disco, neste caso) e determinar onde o nível de interrupção quando o dispositivo atinge o pico. Então, qualquer coisa acima ou perto disso significa que alguém está realmente abusando do dispositivo. Desde que você está usando um controlador interno, vale tudo. Você terá que usar uma análise empírica para adivinhar.
Isso significa que seus limites estão ligados a) seu controlador, b) seus discos e c) sua CPU (maior frequência é igual à capacidade de realizar o trabalho apesar das altas taxas de interrupção).
Para a posteridade, muitos dispositivos têm interrupções. Os mais prováveis de serem um gargalo são relacionados a E / S, especificamente: armazenamento, rede (não apenas TCP), vídeo, áudio (alguns).
Tags linux