quarta-feira, 11 de abril de 2012

As novidades do Linux 3.3

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, Saber-toothed Squirrel (esquilo dentes-de-sabre) e levou 74 dias 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

Nenhum comentário:

Postar um comentário

Postagens populares