A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Administração de Largura de Banda no Linux

Sex

20

Abr

2007


19:22

(5 votos, média 4.80 de 5) 


Fila Stochastic Fairness

Stochastic Fairness Queueing (SFQ) é uma implementação simples da família de algoritmos de fila solidários. É menos preciso que outros, mas precisa de menos cálculos e continua bastante solidário.

A palavra chave na SFQ é conversação (ou fluxo), que, na maior parte das vezes, corresponde a uma sessão TCP ou a um fluxo UDP. O tráfego é dividido num número relativamente grande de filas FIFO, uma para cada conversação. O tráfego é então enviado para uma ciranda (round robin), onde a cada volta todas as sessões têm a chance de enviar dados.

Isto faz com que o comportamento seja solidário e impede que uma conversação afogue as outras. SFQ é chamada de 'Estocástica' porque ela, na verdade, não aloca uma fila para cada sessão - ela possui um algoritmo que divide o tráfego num número limitado de filas usando um algoritmo de hash.

Devido a este hash, várias sessões podem acabar no mesmo balde, o que dá chance a cada uma delas de enviar pacotes, mas acaba dividindo a velocidade efetiva disponível. Para prevenir que esta situação se torne perceptível, a SFQ muda seu algoritmo de hash com alguma frequência, de modo que quaisquer colisões entre duas sessões durem só por alguns poucos segundos.

É importante notar que a SFQ só é útil quando a interface de saída estiver realmente lotada! Se não estiver, também não existirá uma fila na máquina Linux e a SFQ não terá efeito. Mais adiante será descrito como combinar a SFQ com outras qdiscs para obter o melhor resultado. Mais especificamente, configurar uma SFQ na interface Ethernet ligada ao modem a cabo ou ao roteador DSL não faz sentido se esta configuração não for acompanhada por configurações adicionais!

A configuração da SFQ é praticamente automática:

  • perturb: Reconfigura o hash uma vez a cada tantos segundos. Se não estiver configurado, o hash nunca será reconfigurado, o que não é recomendado. 10 segundos é provavelmente um bom valor.
  • quantum: A quantidade de bytes que um fluxo pode tirar da fila antes que chegue a vez da próxima fila. O default é um pacote de tamanho máximo (do tamanho da MTU). Não configure com valor menor que a MTU!
  • limit: O número total de pacotes que entrarão na fila por esta SFQ (depois disto, os pacotes começam a ser descartados).

Se você tem um dispositivo que tenha uma velocidade de link e taxa de disponibilidade idênticas, como um modem de linha discada, esta configuração vai ajudar a promover a solidariedade:

# tc qdisc add dev ppp0 root sfq perturb 10
# tc -s -d qdisc ls
qdisc sfq 800c: dev ppp0 quantum 1514b limit 128p flows 128/1024 perturb 10sec 
 Sent 4812 bytes 62 pkts (dropped 0, overlimits 0) 

O número 800c: é o número de manipulação designado automaticamente, limit significa que 128 pacotes podem esperar nesta fila. Há 1024 baldes de hash (hashbuckets) disponíveis, dos quais 128 podem estar ativos simultaneamente (mais nenhum pacote cabe na fila!). A cada 10 segundos os hashes são reconfigurados.

Informações adicionais