8.4. Resolvendo Filas Comuns/ Problemas de Perda de Quadro


O motivo mais comum para a perda de quadros é uma saturação de fila. O núcleo define um limite para o comprimento de uma fila, e, em alguns casos, a fila enche mais rapidamente do que drena. Quando isso ocorre por muito tempo, os quadros começam a ser descartados.
Como ilustrado em Figura 8.1, “Diagrama de caminho de recepção de rede”, existem duas grandes filas no caminho de recepção: o buffer de hardware NIC ea fila do socket. Ambas as filas precisam ser configurados adequadamente, para proteger contra saturação de filas.

8.4.1. Buffer de Hardware NIC

O NIC enche seu buffer de harware com quadros; o buffer é drenado pelo softirq, o qual declara o NIC via uma interrupção. Para interrogar o status desta fila, use o seguinte comando:
ethtool -S ethX
Copy to Clipboard Toggle word wrap
Substitua ethX pelo nome de dispositivo correspondente do NIC. Isto irá exibir quantos quadros foram despejados dentro do ethX. Geralmente, um despejo ocorre porque a fila não possui mais espaço de buffer no qual armazena quadros.
Existem formas diferentes de resolver este problema, assim como:
Tráfego de entrada
Você pode ajudar a evitar saturação de fila diminuindo a velocidade do tráfego de entrada. Você pode fazer isto filtrando, reduzindo o número de grupos de multicast unidos, abaixando o tráfego de transferência e assim por diante.
Comprimento da Fila
Como forma alternativa você também pode aumentar o comprimento da fila. Isto envolve aumentar o número de buffers na fila específica para qualquer máximo que o driver permitir. Para fazer isto, edite os parâmetros de anel rx/tx de ethX usando:
ethtool --set-ring ethX
Copy to Clipboard Toggle word wrap
Anexe os valores de rx ou tx apropriados. Para mais informações, consulte man ethtool.
Peso do dispositivo
Também é possível aumentar a taxa na qual uma fila seja drenada. Para fazer isso, ajuste o peso do dispositivo do NIC adequadamente. Este atributo refere-se ao número máximo de quadros que a placa de rede pode receber antes do contexto softirq ter que render a CPU e se reagendar. É controlada pela variável /proc/sys/net/core/dev_weight.
A maioria dos administradores têm uma tendência a escolher a terceira opção. No entanto, tenha em mente que existem consequências para fazê-lo. Aumentar o número de quadros que podem ser recebidos a partir de um NIC em uma iteração implica ciclos extra de CPU, durante o qual nenhum aplicativo pode ser programado naquela CPU.
Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat