Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blog do Marc...
Tela cheia

Em breve no Kernel Linux 3.7 - Parte 5 - CPU e Arquitetura

3 de Dezembro de 2012, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.
Visualizado 260 vezes

Autor: Thorsten Leemhuis (Copyright (c) 2012 Heise Media UK Ltd.)
Traduzido: Marcelo Soares Souza (Dúvidas e melhorias na tradução envie por E-mail)
Originalmente: http://h-online.com/-1758293
 
Logo tux GeniusLendo nas entrelinhas do e-mail de lançamento do[1] Linux 3.7-rc6, parecia que tudo apontava para a data de lançamento do Linux 3.7 por volta da primeira semana de Dezembro. O e-mail de lançamento da sétima versão de pré-lançamento[2], por contraste, sugere que talvez haja mais um candidato de lançamento. Cada candidato de lançamento (RC) geralmente adiciona uma semana a data final de lançamento, mais atrasos ocorrerão apenas se os desenvolvedores do kernel precisarem realizar extensas correções exigindo uma nova fase de testes.
 
A descrição das mudanças ao código de processadores e plataforma que se segue, conclui o nosso "Em Breve no Kernel Linux 3.7". Os primeiros quatro artigos da série mostram as mudanças adicionadas dentro do Linux 3.7 nas áreas de sistemas de arquivos e armazenamento, redes, infraestrutura e drivers.
 
ARM 64-bit
 
O Kernel do Linux agora suporta o conjunto de instruções ARM de 64-bit[7] (veja em 1[8], 2[9], 3[10], 4[11] e outros). O código para este conjunto de instruções, oficialmente[12] conhecido como AArch64, foi desenvolvido em grande parte pelos funcionários da ARM[13] e foi colocado em um diretório separado "arch/arm64/" no código fonte do kernel, como sugerido por[14] um grande número de desenvolvedores do kernel quando o código foi inicialmente apresentado.
 
Isto garante que o código esta separado do código para os processadores ARM de 32-bit. O suporte para os processadores Power de 32- e 64-bit também ficaram separados inicialmente, antes, em ambos os casos, de serem combinados. Alguns desenvolvedores tinham, portanto, questionado sobre a necessidade de separação do código ARM de 32- e 64-bit, mas no final, a opinião de vários líderes, dos desenvolvedores do código ARM, de que isto séria a melhor abordagem[15] prevaleceu. Linus Torvalds também parece ter tido reservas sobre a separação, conforme demonstrou em um comentário no e-mail de disponibilização[16] do primeiro candidato de lançamento da versão Linux 3.7.
 
Quando consultado, usando programas tais como uname, porém, o kernel retorna[21] "AArch64", ao invés de ARM64, e isto é o que é esperado em ferramentas envolvidas no suporte ao conjunto de comandos ARM de 64-bit. Isto inclui o binutils, que suporta o AArch64 desde a versão 2.23.51.0.2[22]. O Glibc irá suportar o AArch64 a partir da versão 2.17[23], que deve ser disponibilizada em breve. O suporte a AArch64[24] também foi adicionada na árvore principal de desenvolvimento do GCC e deve fazer parte do GCC 4.8.
 
O conjunto de instruções do ARM 64-bit foi anunciado[25], juntamente com a micro-arquitetura ARMv8, no Outono de 2011. A ARM recentemente mostrou seus primeiros processadores 64-bit na forma do Cortex A53 e A57[26]. Um grande número de empresas pretendem lançar estes processadores. A AppliedMicro já implementou um núcleo ARMv8 em um FPGA e promete o primeiro chip X-Gene antes do final do ano. a empresa esta trabalhando com a ARM e a Red Hat em uma distribuição contendo o Linux ARM64[27]. Um grupo de trabalho da Linaro[28] envolvendo diversas empresas também esta trabalhando em tecnologias para esta distribuição.
 
ARM Multi-Plataforma

 
A curto prazo, muito mais importante para o ARM no Linux do que o suporte para ARM 64-bit é o suporte a multi-plataformas ARM[29] dentro do Linux 3.7. Este permite a criação de imagens do kernel capazes de rodar[30] um grande número de diferentes plataformas ARM de 32-bit.

No 3.7, esta imagem do kernel suporta as implementações Highbank, Mvebu, Picoxcell, Socfpga e Vexpress. O código para outras plataformas serão convertidas nas próximas versões do kernel, com o objetivo de termos uma imagem do kernel capaz de rodar muitas plataformas ARM diferentes ARM, assim como no mundo x86. Este foi um dos objetivos da extensa arrumação e reestruturação que o time de desenvolvedores ARM esta trabalhando já há algum tempo. Informações sobre este projeto podem ser encontrados em artigos no LWN.net[31] e em uma apresentação em vídeo[32] pelo desenvolvedor da Linaro Arnd Bergmann.
 
O time de desenvolvimento do Kernel também adicionou suporte ao SoC Broadcom BCM2835, um SoC equipado com um núcleo ARM que, entre outros usos, é base do Raspberry Pi (1[33], 2[34], 3[35], 4[36] e outros).
 
Virtualização
 
Em conjunto com as versões de desenvolvimento[37] do Xen hypervisor 4.3, o Linux agora pode rodar máquinas virtuais com a ajuda de algumas funcionalidades de virtualização oferecidas por alguns dos últimos núcleos ARM (1[38], 2[39] e outros). O suporte KVM a estas funcionalidades de virtualização do ARM ainda estão sendo desenvolvidas.
 
Máquinas guests Linux podem utilizar alguns drivers do Microsoft Hyper-V para compartilhar informações de configuração de rede com o Microsoft hypervisor (1[40], 2[41] e outros). Extensões para a troca de informação deste tipo foram adicionadas ao serviço hv_kvp_daemon.c, que esta incluso no diretório de ferramentas do Kernel do Linux (1[42], 2[43] e outros). Como as etapas de configurações para a leitura de configurações da rede é diferente em todas as principais distribuições Linux, parte do trabalho do daemon utiliza scripts, que são facilmente adaptáveis a diferentes condições. Scripts de exemplo para configura a interface de rede[44] pra ler configurações de DNS [45] também foram adicionados ao Kernel.
 
O parâmetro use_bio=1 pode agora ser utilizado para ativar um modo alternativo de operação para o driver de bloco virtio-blk, que possibilita a aceleração de transferência de dados entre convidados e hospedeiros em dispositivos de armazenamento rápido. Isto é ilustrado por medições feitas usando ramdisk e um Fusion IO PCIe Flash card[46]. Com um disco SATA normal, porém esta nova abordagem é mais lenta. A requisição de git pull para o código KVM do Linux[47] de suporte ao Xen[48] discute outras mudanças significativas no campo da virtualização.
 
Tracing de Processos
 
A infraestrutura de tracing ganhou o perf-kvm[49], uma ferramenta de análise de eventos que pode ser utilizada para analisar as razões do porque e a frequência que guests  KVM trocam de sistema hospedeiro ("VM exit"). Esta é apenas uma das muitas melhorias[50] ao código de tracing. Existe também uma nova ferramenta de tracing do sistema, perf-trace[51], que provê funcionalidades iniciais comparáveis com a "venerável" ferramenta strace. A nova ferramenta, contudo, utiliza a infraestrutura perf do kernel, o que deve possibilitar a este oferecer um grande número de funções.

O Kernel probes (kprobes) pode agora[52] usar checkpoints ftrace estáticos (caso existam) ao invés de breakpoints. Isto deve reduzir o overhead durante a análise. Também como novidade esta o suporte básico[53] no perf para a unidade de monitoramento de perfomance (performance monitoring unit - PMU) em co-processadores Intel Xeon Phi.
 
Compartimentação

 
O Kernel do Linux agora suporta a funcionalidade de segurança SMAP (supervisor mode access prevention) (1[54], 2[55], 3[56] e outros). A Intel esta planejando introduzir esta funcionalidade nos processadores Haswell, que estão previstos para suceder a geração Ivy Bridge em meados de 2013.

O SMAP protege as páginas de memória usadas por programas de mudanças pelo kernel. Algumas vezes alguns exploits de erros no Kernel podem ser usados para alterar a memória usada por programas que rodam com privilégios de root, afim de aumentar o seu privilégio no sistema. Detalhes destas funcionalidades podem ser encontrados na página 408 do documento de referência de conjunto de instruções de arquitetura da Intel[57]⁠, em uma mensagem no fórum grsecurity[58] e em artigos na LWN.net[59].
 
Diversos

 
Com a maioria das versões do Linux lançadas no último ano, no Linux 3.7 os desenvolvedores do kernel otimizaram alguns algorítimos de criptografia do kernel. Melhorias no driver aesni_intel, por exemplo, devem garantir até três vezes mais rendimento, conforme mostrado nos resultados de benchmark[60] realizados por tcrypt.
 
O Turbostat, uma aplicação de diagnostico inclusa no kernel, agora tem opções[61] para mostrar o número de SMI (System Management Interrupts). Este também provê mais informações sobre a máxima frequência permitida pelo turbo boost[62].
 
Se a tabela de ACPI contém a descrição de componentes do sistema, esta pode ser lida do diretório sysfs para os componentes relevantes usando o arquivo firmware_node/description[63].
 
O diretório "tools/power/acpi/" no código do kernel agora contém a ferramenta de diagnostico acpidump, que salva as tabelas ACPI em um arquivo ASCII. Estas informações podem ajudar aos desenvolvedores que não tem acesso a sistema com ferramentas de debugging.
 
O código do Sparc agora suporte o Niagara 4.
 
O código do Power e PowerPC agora suporta a ferramenta uprobes[64] e, em alguns processadores, pode endereçar até 64TB de memória[65] - porém este ainda não foi testado.
 
Links destes artigo:
[1] http://article.gmane.org/gmane.linux.kernel/1395793
[2] http://article.gmane.org/gmane.linux.kernel/1400265
[3] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-1-Filesystems-storage-1750000.html
[4] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-2-Networking-1752099.html
[5] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-3-Infrastructure-1755953.html
[6] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-4-Drivers-1757358.html
[7] http://www.h-online.com/news/item/ARM-targets-64-bit-servers-1368839.html
[8] http://git.kernel.org/linus/8c2c3df31e3b87cb5348e48776c366ebd1dc5a7a
[9] http://git.kernel.org/linus/38074229de4774597ea09315ae78a550cada5ba6
[10] http://git.kernel.org/linus/3dd681d944f6d861f12ee03aff17a14342963330
[11] http://git.kernel.org/linus/9703d9d7f77ce129621f7d80a844822e2daa7008
[12] http://infocenter.arm.com/help/topic/com.arm.doc.aeg0014e/ABCDEFGH.html#BABJBIJF
[13] http://thread.gmane.org/gmane.linux.kernel/1367774
[14] http://www.h-online.com/news/item/64-bit-ARM-support-for-Linux-AArch64-1634610.html
[15] http://thread.gmane.org/gmane.linux.kernel/1324121/focus%3D1324278
[16] http://article.gmane.org/gmane.linux.kernel/1375496
[17] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-1-Filesystems-storage-1750000.html
[18] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-2-Networking-1752099.html
[19] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-3-Infrastructure-1755953.html
[20] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-7-Part-4-Drivers-1757358.html
[21] https://www.youtube.com/watch?v=GEcvSq4SDkc&t=0m30s
[22] http://article.gmane.org/gmane.comp.lib.glibc.alpha/25023/
[23] http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;hb=HEAD
[24] http://gcc.gnu.org/viewcvs/trunk/gcc/config/aarch64/
[25] http://www.h-online.com/news/item/Processor-Whispers-About-big-ARMs-and-long-legs-1372392.html
[26] http://www.h-online.com/news/item/ARM-introduces-Cortex-A53-and-Cortex-A57-64-bit-processor-cores-1740889.html
[27] http://phx.corporate-ir.net/preview/phoenix.zhtml?c=78121&p=irol-newsArticle&ID=1750154&highlight
[28] http://www.h-online.com/news/item/Linaro-creates-ARM-enterprise-server-group-1742127.html
[29] http://thread.gmane.org/gmane.linux.kernel/1368173/focus%3D1368179
[30] http://git.kernel.org/linus/387798b37c8dd0ae24c0ac12ba456dd76865bca3
[31] http://lwn.net/Articles/496400/
[32] http://linuxplumbers.ubicast.tv/videos/news-from-the-arm-architecture/
[33] http://git.kernel.org/linus/ec9653b8476bf526dde7bdefbc2be6b7aaa34db7
[34] http://git.kernel.org/linus/89214f009c1d38568456dcf997d93977928fe2c3
[35] http://git.kernel.org/linus/ee4af5696720bb5b9de2e3b18be42089bed1e638
[36] http://git.kernel.org/linus/75fabc3f64489aa2c52eec54cd433ea269a25e05
[37] http://article.gmane.org/gmane.linux.kernel/1369834
[38] http://git.kernel.org/linus/4c071ee5268f7234c3d084b6093bebccc28cdcba
[39] http://git.kernel.org/linus/c43cdfbc4cebdf1a7992432615bf5155b51b8cc0
[40] http://git.kernel.org/linus/03db7724af1315f644ddc26e9539789eac4a016a
[41] http://git.kernel.org/linus/9b5957803cb444a99275355eb2309b6fecc63c5f
[42] http://git.kernel.org/linus/32061b4d3830e61975ede409df389804507fd220
[43] http://git.kernel.org/linus/16e87100e62330cb1e58ee772cacb7d4e6d5b61b
[44] http://git.kernel.org/linus/1fbdba4edd071daffbba1c172abb44bbe6a4344a
[45] http://git.kernel.org/linus/d82c37ce6896734a4a2a9b74c22084fe47824466
[46] http://git.kernel.org/linus/a98755c559e0e944a44174883b74a97019e3a367
[47] http://article.gmane.org/gmane.linux.kernel/1369806
[48] http://article.gmane.org/gmane.linux.kernel/1368526
[49] http://git.kernel.org/linus/bcf6edcd6fdb8965290f0b635a530fa3c6c212e1
[50] http://thread.gmane.org/gmane.linux.kernel/1367671
[51] http://git.kernel.org/linus/514f1c67c2fdae7b334fdc5adee63a484781241a
[52] http://git.kernel.org/linus/ae6aa16fdc163afe6b04b6c073ad4ddd4663c03b
[53] http://git.kernel.org/linus/e717bf4e4fe8adc519f25c4ff93ee50ed0a36710
[54] http://git.kernel.org/linus/52b6179ac87d33c2eeaff5292786a10fe98cff64
[55] http://git.kernel.org/linus/63bcff2a307b9bcc712a8251eb27df8b2e117967
[56] http://git.kernel.org/linus/40d3cd6695014bf3c44e2ca66b610b18acaf923d
[57] http://software.intel.com/sites/default/files/319433-014.pdf
[58] http://forums.grsecurity.net/viewtopic.php?f=7&t=3046
[59] https://lwn.net/Articles/517475/
[60] http://git.kernel.org/linus/023af608254add7ba037cd634cc5f2fb21ff6420
[61] http://git.kernel.org/linus/f9240813e61cb3e5838c9ab0237af831c61df7cf
[62] http://git.kernel.org/linus/6574a5d5053cd3b8e7c088900b80a9ff51895450
[63] http://git.kernel.org/linus/d1efe3c324ead77d3f6cd85093b50f6bd2e17aba
[64] http://git.kernel.org/linus/8b7b80b9ebb46dd88fbb94e918297295cf312b59
[65] http://git.kernel.org/linus/048ee0993ec8360abb0b51bdf8f8721e9ed62ec4


Tags deste artigo: em breve no kernel linux desenvolvimento linux kernel software livre