No último dia 19 (ainda dia 18 nos EUA), Linus Torvalds apresentou ao mundo a aguardada versão 3.3 de seu kernel livre. O primeiro kernel do ano mantém o codinome que já dura algumas versões,
para ficar pronto (contados a partir do lançamento da versão 3.2). As alterações nesse tempo foram muitas: os mais de 10.000 commits resultaram, pela primeira vez, num total superior a 15 milhões de linhas de código (viva!) distribuídas em 38.082 arquivos.
Principal novidade: Android
O que mais chama a atenção no Linux 3.3, no entanto, está fora das tradicionais arenas de servidores e desktops: a reincorporação de partes do código do Android após alguns anos de separação. Se você tem como objetivo criar um
mod para dispositivos equipados com Android, esta nova versão do kernel certamente será de grande ajuda — aguarde também as próximas versões!
Demais novidades
No entanto, o Android não é a única novidade significativa. Na área de rede, o Linux 3.3 traz avanços interessantes, como o suporte a
teaming de interfaces, o combate ao
bufferbloat, limitações de rede pelo subsistema cgroups e a inclusão do projeto Open vSwitch. A área de armazenamento também traz novidades no Btrfs e no Ext4.
Teaming de interfaces de rede
Quem necessita de alta disponibilidade ou tolerância a falhas na infraestrutura de rede certamente utiliza o módulo
bonding do kernel Linux. No entanto, os desenvolvedores do kernel estavam descontentes com a manipulação, o gerenciamento e o desempenho desse recurso. Por isso, criaram o
teaming (algo como "
criação de equipes"
) de interface de redes, já anunciado como "
um substituto para o bonding rápido, escalável, limpo e controlado pelo espaço de usuário"
. Isto significa que a criação e manipulação de agrupamentos (
teams) de interfaces de rede passará a ser realizado pelo utilitário
ip
(do pacote
iproute2), da seguinte forma:
ip link add link [ MAC ] [ NAME ] type team
Além do
ip
, há uma nova biblioteca chamada
libteam para interação com o espaço de usuário.
Bufferbloat, a ameaça
O fenômeno conhecido como
bufferbloat (que pode ser entendido como "
excesso de buffers"
) vem ganhando atenção da mídia técnica em decorrência de seus efeitos altamente maléficos para todos os sistemas conectados em rede. A principal consequência do fenômeno é a enorme latência no tráfego de pacotes de redes pelos mais diversos tipos de aparelhos, desde sistemas operacionais de desktops até os servidores, passando por todos os roteadores no meio do caminho, estejam eles equipados com Linux ou não.
O renomado programador
Jim Gettys chegou a montar um
vídeo demonstrativo do bufferbloat para explicar a todos a gravidade do problema.
O Linux 3.3, por sua vez, também entrou de cabeça nessa briga com a inclusão dos
byte queue limits (limites de filas de bytes). Com eles, torna-se possível limitar o total de bytes que o sistema inclui nos buffers dos dispositivos de rede, o que, por sua vez, permite que pacotes de maior prioridade "
furem a fila"
e sejam encaminhados ao dispositivo antes dos demais pacotes. Este é um primeiro passo para alcançar um melhor uso dos buffers de rede sem prejudicar a qualidade (e as diferenças!) dos serviços de rede utilizados.
Outro passo significativo é a definição de prioridades de rede por processo, também incluída no kernel 3.3. O subsistema cgroups passa agora a contar com um novo recurso: prioridade de rede. Desta forma, é possível determinar, para cada processo ou grupo de processos, a prioridade dos pacotes que ele envia pela rede. Da mesma forma, é possível definir um tamanho máximo (em bytes) dos buffers TCP para cada cgroup.
Em conjunto, esses recursos permitem determinar que certos serviços de rede terão acesso preferencial à rede, tanto em termos de
throughput quanto de latência.
Íntegra em
IBM developerWorks