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
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
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.
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.

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 oBlog 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.

© 2024 Red Hat, Inc.