Está no ar, desde o último dia 21, a versão 3.4 do kernel Linux. Ainda respondendo pelo codinome "Saber-toothed Squirrel", esta versão do pinguim ficou pronta com relativa rapidez: os 63 dias de desenvolvimento contaram com quase 11 mil commits, que acrescentaram aproximadamente 120 mil linhas de código ao kernel, totalizando mais de 15,3 milhões distribuídas num conjunto de 38.566 arquivos (fonte: h-online).
As novidades, embora menos numerosas do que em célebres versões anteriores, são certamente muito importantes: a nova ABI X32, avanços significativos no btrfs em diversas áreas (o fsck está ainda mais próximo!), o suporte do device-mapper à verificação de integridade de blocos de dados com o target verity e também ao thin provisioning, além de suporte inicial às novas arquiteturas de GPU Kepler (NVIDIA), Southern Islands e Trinity (ambas AMD), e um novo LSM (Linux Security Module) chamado Yama.
x32: de que se trata?
Programas compilados para a arquitetura x86 de 32 bits utilizam recursos de um processador de 32 bits e ficam restritos aos limites dessa arquitetura. Destes, o limite mais incômodo é o espaço de endereçamento de memória: com 32 bits, o kernel somente consegue endereçar 4 x 2^30 (ou seja, 4 GiB) de RAM. O segundo limite mais incômodo é o de registradores de uso geral. O baixo número de registradores na arquitetura x86 exigia um maior uso do stack da memória, potencialmente prejudicando a velocidade de execução das instruções.
A arquitetura x86-64 dobrou o número de registradores de uso geral (de 8 para 16) e elevou ao quadrado o espaço de endereçamento (de 4 Gib para 16 EiB — que são 2^32 ao quadrado). Um problema potencial surgido desta mudança, no entanto, foi o aumento do próprio consumo de memória. Para se referir a um endereço de memória de 64 bits, os ponteiros na arquitetura x86-64 precisam ser, eles próprios, números de 64 bits. Ao ocupar mais memória, o código do programa também ocupa uma maior porção do cache, potencialmente eliminando parte dos ganhos anteriores.
Felizmente, são raros os programas que precisam de um espaço de memória superior a 4 GiB, o que levou algumas distribuições a propor o uso de kernels x86-64 com aplicativos x86. Desta forma, ter-se-ia o melhor dos dois mundos, mas veja um exemplo do trabalho que isso dá.
A nova "solução" para este problema (a ABI x32) chega tarde, mas ainda a tempo para ocupar alguns nichos de mercado. Em computadores tradicionais — laptops, desktops e máquinas maiores — dificilmente veremos uma grande adoção da nova ABI x32.
Os dispositivos embarcados provavelmente serão os principais usuários dessa nova ABI. Com ela, os programas utilizam ponteiros de 32 bits (o que significa economia de espaço), mas também conseguem usar todos os 16 registradores de uso geral da CPU x86-64. Como os aplicativos para dispositivos móveis e embarcados dificilmente precisarão de mais de 4 GiB de memória, a nova ABI presente no kernel 3.4 permite desempenho superior na categoria de hardware que mais precisa dessa "força".
Evidentemente, para usar a nova ABI, todos os programas e bibliotecas precisarão ser recompilados.
Btrfs: diversas pequenas melhorias
O Btrfs ainda não conta com o tão sonhado fsck, um dos pré-requisitos para seu uso em produção. Porém, ele acaba de ganhar a capacidade (com o comando btrfs-restore
) de resgatar arquivos (ou seus pedaços) em sistemas de arquivos danificados. Já é um passo a mais. Além disso, em caso de erros no sistema de arquivos, ele agora já consegue ser remontado em modo somente leitura, em vez de causar um kernel panic desnecessariamente.
Os blocos de metadados, antes restritos ao tamanho de 4 KiB, finalmente foram "desbloqueados" no código. Explicando: já existia esse plano, mas o recurso estava desativado no código-fonte, sendo ativado somente agora com o kernel 3.4. Os blocos de metadados passam a alcançar até 64 KiB, o que reduz sua fragmentação e aumenta o desempenho do Btrfs.
Por falar em desempenho, partes importantes do código desse sistema de arquivos da próxima geração (quando chega a próxima geração, hein?) foram re-escritas, com resultados muito interessantes: o page cache, que guarda blocos de dados do sistema de arquivos no cache em memória, agora interage melhor com o Btrfs, que por sua vez passa a gastar menos CPU e fazer menos interrupções de gravações com leituras.
Device-mapper: integridade e thin provisioning
Imagine armazenar um hash criptográfico de cada bloco do sistema de arquivos e verificar esse hash a cada leitura de cada bloco.
Pois é isso que faz o novo target do device-mapper, chamado dm-verity
. Ele já possui entre seus usuários o sistema operacional Chrome OS e o Netflix.
Quanto ao thin provisioning (fornecer um dispositivo de armazenamento gravável, mas que ocupe somente o espaço mínimo necessário), o target dm-thin
agora oferece suporte ao recurso discard presente em SSDs, e também pode ser exportado múltiplas vezes, em regime somente leitura, para outros volumes (algo como um snapshot somente leitura). Isto facilita enormemente a implementação de máquinas virtuais baseadas em templates, assim como o uso de sistemas stateless ou temporários.
Segurança: Yama
Os módulos de segurança do kernel Linux já foram abordados anteriormente por aqui, e agora têm um novo companheiro, o simplista Yama.
Ainda não está claro (ao menos para mim) se o objetivo dos desenvolvedores é completar o Yama no futuro, pois neste momento ele somente é capaz de limitar o acesso à interface ptrace
, que pode ser usada por um processo para analisar regiões de memória utilizadas por outros pertencentes ao mesmo usuário.
Um detalhe interessante: no mesmo momento, o SELinux ganhou um recurso muito semelhante.
Drivers de vídeo
Poucas horas foram necessárias entre o lançamento da arquitetura Kepler da NVIDIA e a inclusão de suporte inicial a ela no driver nouveau, assim como no Xorg e na infraestrutura Mesa 3D.
No campo da concorrente AMD, ambas as séries Southern Islands (em placas off-board) e Trinity (chips integrados à próxima geração de CPUs do fabricante) ganharam suporte no Linux 3.4. O complemento nos drivers do Xorg e Mesa 3D está em desenvolvimento.
O terceiro player desse mercado, a Intel, finalmente ativou o recurso RC6 de economia de energia pela GPU, o que significa que laptops equipados com chips Sandy Bridge ou mais recentes automaticamente gozarão de uma maior autonomia de bateria.
A novidade mais promissora na área gráfica, contudo, é a chegada do componente prime/dma-buf
, que facilita significativamente a comunicação entre GPUs e abre espaço para hotplug de GPUs. Basta os drivers começarem a utilizar o novo recurso.
Outras novidades
Claro que, além destas novidades mais marcantes, o Linux 3.4 também conta com inúmeras outras alterações menores que podem ser significativas para você. Recomento conferir os links relevantes ao final deste artigo para análises mais detalhadas que, por sua vez, podem apontar os leitores para informações mais profundas.
Futuro
Já se passaram alguns dias desde a abertura da "janela de inclusões" (merge window) para o kernel 3.5, então esta previsão para a próxima versão do Linux é bem fundamentada.
O subsistema MD, responsável pelo RAID via hardware, começará a oferecer suporte à modificação do layout do RAID. Ainda na área de armazenamento, sistemas Linux passarão a poder operar como dispositivos de armazenamento (hosts SCSI) acessíveis via Firewire e USB.
O novo sistema de init systemd (mais especificamente seu sistema de log) está preparando o terreno para fazer certas alterações no código de logs do kernel.
Na área de virtualização com contêineres, também já foi incluído o reparo de conexões TCP.
Para o bem de todos, incluíram o novo algoritmo CoDel de gerenciamento de filas, inédito em todos os sistemas operacionais, e que pode ser "um passo importante na solução do problema do bufferbloat", nas palavras de Jonathan Corbet.
A data prevista (mas imprecisa) para o lançamento do Linux 3.5, ainda segundo o Linux Weather Forecast é o início de agosto.
Links relevantes
- Thorsten Leemhuis, "What's new in Linux 3.4" no H Online
- Linux 3.4 no Kernel Newbies
- Jonathan Corbet, "Linux Weather Forecast"
Até a próxima!
Outros artigos deste autor
- Bê-á-bá do GPG parte 1 e parte 2
- As novidades do kernel Linux 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
- 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