O Wireshark possui dois tipos de filtros: exibir filtros e capturar filtros.
Os filtros de exibição são mais flexíveis do que os filtros de captura (há algumas coisas que os filtros de captura não podem fazer) porque os filtros de exibição examinam os dados após já terem sido copiados para o log de pacotes da wireshark.
Os filtros de captura podem ser um grande benefício para o desempenho se você tiver muitos fluxos separados de dados passando pela sua interface de rede, mas desejar capturar apenas uma pequena quantidade deles. Os dados nunca são copiados para o wireshark se ele não corresponder aos filtros de captura.
Você pode realmente tentar isso e sentir a diferença de desempenho na interface do usuário (e observar a diferença de desempenho no uso da CPU) fazendo algo assim:
- Inicie um servidor da web rápido no host local.
- Inicie um enorme download do arquivo HTTP (gigabytes de dados).
- Capture na interface da rede localhost com um filtro de captura que ignora a porta em que o download enorme está ocorrendo.
- Limpe o filtro de captura completamente e compare o desempenho e o uso da CPU na Etapa 3 para definir o mesmo tipo de filtro no lado do filtro de exibição.
IIRC, o Wireshark descarta seus limites de pacote para o disco (portanto, não é OOM), então provavelmente o gargalo que ocorre com filtros de captura "muito largos" é com o subsistema de disco tendo que registrar tudo na sua interface de rede .
É por isso que, se você estiver usando um servidor muito ocupado apenas para observar um fluxo ou processo específico, é essencial estabelecer filtros de captura razoáveis. Caso contrário, a wireshark introduzirá uma carga significativa da CPU e uma taxa de transferência de E / S.
No Windows, a implementação da captura de pacotes ocorre principalmente no lado do kernel. O Wireshark usa uma ferramenta chamada WinPcap , um módulo do kernel, que na verdade compila seus filtros de captura em código nativo em tempo de execução para criar um teste extremamente otimizado para saber se o filtro de captura está correspondendo ou não. Se o filtro não corresponder, o pacote nunca será copiado para o espaço de processo da wireshark.
A implementação do backend do lado do kernel do pcap pode variar entre as plataformas e, assim, o desempenho e a eficiência do mesmo.