Pergunta: quantos dias são necessários para os desenvolvedores do kernel Linux assimilarem 10.247 commits que resultam num total de 29.733 arquivos? Acertou quem respondeu 71! :)
O kernel Linux 3.6, o mais volumoso da história (como de praxe a cada nova versão) foi lançado no dia 30 de setembro e finalmente conta com um novo codinome, "Terrified Chipmunk". Seus commits, produzidos por uma comunidade de mais de 200 empresas (num total de 1.200 pessoas colaborando) são os menos numerosos desde a versão 3.1, mas, como todos já sabem, isto não indica nenhum arrefecimento dessa frenética comunidade. Muito pelo contrário: o novo kernel está repleto de novidades interessantíssimas!
Standby híbrido em notebooks
Todo dono de um computador portátil já conhece os recursos de suspender para a memória (suspend to RAM) e hibernar (hibernate ou suspend to disk). O primeiro envolve salvar o estado do sistema na memória e desligar o restante do hardware, de forma a manter um consumo mínimo de energia e permitir que o notebook seja "acordado" em menos de cinco segundos.
A hibernação é semelhante, mas suspende o sistema e grava o estado da memória no disco (geralmente, na partição de swap) e desliga completamente o hardware. Com isto, a bateria dura ainda mais, mas a máquina leva mais de alguns segundos para "acordar", já que é preciso passar pelo carregador de boot normamlente (como num boot normal) e depois ainda carregar os vários gigabytes do disco para a memória.
E o que acontece quando você suspende o sistema para a memória e, mesmo consumindo pouca bateria, ela acaba? Isto é equivalente ao famoso dedoff ou caboff: o sistema é desligado sem que seu estado seja gravado no disco. Ao religar a máquina, ela faz um novo boot, executa o fsck nos discos e carrega o sistema novamente do zero.
O novo recurso suspend to both faz o que o nome sugere: suspende o estado do sistema tanto para a memória quanto para o disco. Desta forma, enquanto houver bateria o sistema acordará rapidamente. E no caso de a bateria do notebook acabar, todo o estado da memória será recuperado diretamente do disco, de forma que não se arrisca cair numa situação de inconsistência do sistema.
Sistemas de arquivos
O btrfs foi o grande ganhador de recursos no kernel 3.6. Ele não oferece suporte a quotas de usuários, mas recebeu dois recursos que mimetizam seu resultado: limites de tamanhos (quotas) para subvolumes e também grupos de quotas. Com isto, o administrador pode "criar um subvolume separado para o diretório home de cada usuário e atribuir um tamanho máximo a ele", como define muito bem o kernelnewbies. E, para definir a mesma quota para múltiplos subvolumes de uma única vez, basta criar um grupo de quotas e atribuir todos os subvolumes desejados a esse grupo.
Outro recurso interessante do btrfs é a possibilidade de calcular as diferenças entre subvolumes ou snapshots. Ele permite gerar um arquivo de diff entre um subvolume e seu snapshot e depois aplicar as diferenças, o que pode ser muito bom para tarefas de backup.
Por último, os tão desejados clones de arquivos que o mecanismo de copy-on-write do btrfs permite agora podem abranger múltiplos subvolumes. Até o kernel 3.5, somente arquivos de um mesmo subvolume podiam ter seu conteúdo "desduplicado" pelo comando cp --reflink.
Por último, uma forma de ataque relativamente simples foi corrigida no kernel. Se ativada via sysctl, essa correção impede que o kernel siga links (tanto simbólicos quanto hard links) que apontem para algum local superior (isto é, mais próximo da raiz) da árvore de diretórios. Como de costume, a LWN cobre muito bem este assunto.
Armazenamento e swap
Fazer swap em dispositivos de bloco NBD (network block device) ou sistemas de arquivos NFS -- ou seja, pela rede -- jamais foi recomendável: em caso de uso intensivo da swap, o sistema pode sofrer um deadlock e jamais retornar à atividade.
O Linux 3.6 ganha, finalmente, a posibilidade de fazer swap pela rede sem esses riscos com mecanismos explicados em 2011 na LWN.
Outra novidade na área de storage é uma interface que permite a programas avisar ao kernel quando uma partição mudar de tamanho. A interface será usada pelo resizepart, novo programinha a ser incluído na próxima versão do pacote util-linux.
TCP Fast Open
Tradicionalmente, o "three-way handshake" do protocolo TCP requer a transmissão de dois pacotes (um do cliente e um do servidor) antes de se iniciar o envio de dados propriamente ditos. Em conexões que trocam dados pequenos, isto significa um grande overhead -- portanto, latência -- antes de a conversa começar.
O TCP Fast Open (muito bem descrito neste artigo da LWN) é um procedimento para reduzir esse problema por meio da inclusão de dados já no primeiro pacote enviado do cliente para o servidor. O mecanismo envolve a geração de cookies TCP ao se estabelecer a primeira conexão entre o cliente e o servidor, funciona perfeitamente bem com interlocutores que ainda não tenham suporte à nova técnica e, segundo seus proponentes, oferece ganhos de desempenho entre 4% e 41% na latência das conexões típicas da Web, dependendo do cenário.
O Linux 3.6 já conta com a parte cliente desse suporte. Falta ainda a inclusão do suporte ao lado servidor para tornar o kernel Linux ainda mais avançado e desejável para serviços de rede.
Golpe contra o bufferbloat
O problema do bufferbloat já foi explicado aqui algumas vezes e está bem detalhado Internet afora: resumidamente, trata-se do excesso de buffers de transmissão de pacotes de rede em cada um dos dispositivos por onde passa um pacote entre sua origem e seu destino.
O mais recente golpe aplicado contra esse problema é o recurso de TCP small queues, também muito bem detalhado na LWN. Com ele, o kernel observa constantemente o tamanho dos buffers de escrita (ou seja, saída) dos sockets com respeito aos limites de transmissão. Caso os buffers já estejam acima do limite estabelecido — por padrão, 128 KiB por socket — o novo pacote não entrará na fila e precisará aguardar.
Os resultados relatados pelo desenvolvedor do patch do kernel impressionam: há uma redução real do tamanho dos buffers e nenhuma perda de throughput — a principal preocupação quando se diminui o tamanho de um buffer.
Gerenciamento de energia
Dispositivos PCI Express possuem alguns estados de economia de energia, sendo o mais profundo deles o corte total da alimentação, também chamado de D3cold. A partir da versão 3.6, o Linux oferece suporte a este estado em tais dispositivos, o que permite reduzir ainda mais o consumo de energia do sistema como um todo em diversas situações.
Cgroups de HugeTLB
O subsistema de cgroups (veja três artigos abaixo) recebeu no Linux 3.6 um novo controlador: hugetlb. Com a novidade, torna-se possível limitar o uso de páginas gigantes (huge pages) de memória para cada cgroup.
Curiosamente (na minha opinião, pelo menos), este recurso ganhou um controlador à parte, em vez de ser incluído no controlador de memória.
Virtualização
Já foi incluído na árvore principal do kernel o driver tcm_vhost. Embora ainda tenha qualidade de staging, ele está disponível fora dessa árvore. Com ele, máquinas virtuais sobre KVM serão capazes de utilizar dispositivos SCSI do anfitrião com apenas uma perda mínima de desempenho. Esse KVM...
Outra novidade é uma redução geral no tratamento de interrupções geradas pelo hóspede e enviadas ao sistema anfitrião, o que pode trazer certa melhoria de desempenho em vários tipos de tarefas.
Ainda na área de virtualização, as tecnologias de virtualização de I/O embutidas em nos processadores x86(_64) modernos agora promovem um isolamento mais eficaz de dispositivos PCI e PCI Express por meio dos IOMMU Groups, que também estão ajudando a construir o framework VFIO (Virtual Function I/O). No futuro, o VFIO permitirá ganhos consideráveis de desempenho ao entregar dispositivos PCI e PCI Express diretamente para máquinas virtuais via espaço de usuário — o que também, de quebra, reduz o risco desta tarefa para o anfitrião.
Futuro
A próxima versão do kernel, segundo o Linux Weather Forecast e The H Open, deve sair no começo de dezembro e trazer novidades no suporte a processadores ARM de 64 bits, ao recurso Supervisor Mode Access Preventionde hardwares Intel, ao protocolo SMB 2.1 no sistema de arquivos CIFS, ao protocolo de roteamento GRE em IPv6, ao TCP Fast Open no lado servidor e à extensão IMA appraisal, para uso de TPM (Trusted Platform Module).
Olhando mais longe, o mesmo site aponta como possíveis acréscimos ao nosso kernel livre preferido os patches do Android, a estabilização do sistema de arquivos Btrfs, a eterna inclusão de mais recursos da árvore realtime, o suporte à ABI x32 e a "naturalização" dos cgroups, também já abordados anteriormente aqui no blog.
Links usados pelo autor
- Linux 3.6 no Kernel Newbies
- "What's new in Linux 3.6", de Thorsten Leemhuis, em The H Open
- "Where the 3.6 kernel came from", de Jonathan Corbet, na LWN
- Linux Weather Forecast, na Linux Foundation
- "Safely swapping over the net", de Jonathan Corbet, na LWN
- "TCP small queues", de Jonathan Corbet, na LWN
- "TCP Fast Open: expediting web services", de Michael Kerrisk, na LWN
- "Tightening security: not for the impatient", de Jonathan Corbet, na LWN
Outros artigos desta série
- As novidades do Linux 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.6.39 (e preview), 2.6.38 (também com preview), 2.6.37, 2.6.36, 2.6.35 e 2.6.34
Outros artigos deste autor
- Firewall mais econômico e eficaz com IPset
- Bê-á-bá do GPG parte 1, parte 2 e parte 3
- Velhos recursos, novas funcionalidades
- Sim, Richard Stallman ainda é importante
- Mudança de carreira para TI
- Um /dev/random infindável
- Journal, "o systemd do syslog"
- SSD no desktop Linux, parte 1 e parte 2
- LVM2: obrigatório em servidores, como recuperar de um desastre simples e até mesmo sem acesso ao backup do VG
- Gerenciamento de tarefas sem sair do terminal
- Idiotas e o Código Aberto
- Bridge Ethernet com máquinas virtuais no Linux
- Mais uma forma de ganhar dinheiro com Software Livre
- Os hackers mandam no Linux
- Bê-á-bá do systemd, apresentação, parte 1, parte 2, parte 3, parte 4, parte 5, parte 6 e comparativo com outros sistemas de init
- Entrevista: Lennart Poettering, autor do systemd
- VPN por assinatura para qualquer usuário
- Virt-manager: virtualização fácil, flexível e 100% livre
- Comparativo: GnuTLS versus OpenSSL para criar uma CA
- Bê-á-bá dos cgroups parte 1, parte 2 e parte 3
- Mais protocolos para seu switch de rede
- Dragonfly BSD e seus recursos
- Certificados digitais, assinaturas de e-mail, mensagens criptografadas: por que tudo isso funciona?
- Informações de automount via LDAP
- O fim da eth0?
- Uma loja de aplicativos para qualquer sistema GNU/Linux
- Configuração de touchpad no xorg.conf.d
- Gentoo, uma ótima distribuição em queda:
- Bê-á-bá do MAC no Linux, parte 1, parte 2 (TOMOYO), parte 3 (smack), parte 4 (SELinux: início), parte 5 (SELinux: continuação) e parte 6 (AppArmor)
- Espionagem industrial: evite-a de forma colaborativa
- A fragmentação dos contêineres no Linux
- Navegação mais segura e rápida com um bom arquivo hosts e melhorias no script de atualização do arquivo hosts
- Espírito natalino no Software Livre: você já fez sua doação?
- Tem disco na rede: ATA over Ethernet
- Ative a compactação de memória com Zram
- Contra força bruta, defesa bruta
- Kernel Linux, blobs binários, liberdade de software e Linux-libre
- Fcron: melhor que Cron e Anacron juntos
- Com getopts, seus scripts ficam mais profissionais
- Dica rápida: Automount mais inteligente
- Dica rápida: otimização de desktops com kernel Linux no /proc e /sys
- Fez besteira no /etc? Use o git para retornar tudo ao normal
- Renomear interface de rede com Udev
- Servidores atacados: culpa do distribuidor do kernel?
- Dica rápida: calendário anual no OpenOffice.org
- Prompt de Bash mais útil
- Bê-á-bá do SSH partes 1, 2, 3, 4, 5, 6, 7, 8 e 9
- O planeta inteligente, na visão da IBM. Temos tempo até a Copa do Mundo?
- Snapshots COW para os menos favorecidos: cron, rsync e hardlinks
- Protocolos da Internet: futuro e futuro do pretérito
- Tux3, o sistema de arquivos que (mais uma vez) não aconteceu
- Compiladores melhorados pela genética
Marcações: 
3.6
kernel
terrified_chipmunk
linux