Textos

Publicado por Marcelo Soares Souza em 13 de Julho de 2012 licenciado sobre Creative Commons 3.0 Brasil

Tux GeniusAutor: 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/-1634054

Como a ajuda do uprobes, a ferramenta de monitoramento de performance pode agora analisar ferramentas dentro do espaço do usuário (userspace). As análises em andamento sobre o código do ARM já esta mostrando resultados.
 
Depois de anos de desenvolvimento, dezenas de tentativas abortadas e algumas reestruturações, o código para o uprobes (userspace probes) finalmente foi adicionado dentro do Kernel (1[1], 2[2], 3[3], 4[4], 5[5] e outros). Isto possibilita que o kernel insira breakpoints dentro do código de ferramentas no espaço do usuário durante a execução, embora atualmente isto possa ser feito apenas através do subsistema de eventos perf do kernel. Este permite o rastreamento da execução que fazem uso desta ferramenta - tal como o componentes perf do kernel e a versão 1.8[6] do systemtap[7] - este adiciona tracepoints para o monitoramento do comportamento durante a execução do kernel e/ou programas do mesmo tipo.
 
Até agora, o perf pode apenas observar processos dentro do kernel, enquanto o systemtap necessita do utrace, que nunca foi adicionado oficialmente ao kernel, para monitorar ferramentas no espaço de usuário. Uprobes é ele mesmo derivado do utrace, embora tenham se separados a muito tempo. Instruções para utilizar o uprobes na prática podem ser encontrados no commit do uprobes[8]. Informações gerais podem ser encontrados no artigo[9] no LWN.net, que explica que o kernel, apesar da nova opção, ainda não esta perto de oferecer as funcionalidades necessárias para criar uma solução de tracing comparável ao dtrace do Solaris. Para isto será necessário várias extensões ao código dentro e em torno do uprobes, algumas das quais ainda estão sendo desenhadas.
 
Tracing
Alguns arquivos da ferramenta ftrace "trace-cmd" fizeram seu caminho[11] para dentro do diretório de ferramentas do kernel. Estas estabelecem uma base para uma biblioteca libtraceevents - destinada a uma fundação comum de apoio a ferramentas de tracing, incluindo a ferramenta perf do kernel, que já utiliza esta biblioteca[12] no Linux 3.5. Como Ingo Molnar relata[13], na sua principal requisição de git pull para o subsistema perf, que programas como o powertop devem também utilizar esta biblioteca. Esta requisição também menciona muitas outras mudanças nesta área, tais como melhorias na forma em que [14] o reporte gerado pelo assembler, usando a ferramenta perf-report, é exibida; o kernel agora suporta[15] amostragens precisas de eventos usando a Instruction-Based Sampling (IBS), que é oferecida nos processadores AMD recentes voltado a monitoramento de performance.
 
ARM
A revisão [16] do código do ARM, que esta em progresso a mais de um ano, prossegue no kernel 3.5. Algumas das mais significantes mudanças foram discutidas em duas threads na requisição principal de git pull do Linux 3.5 (1[17], 2[18]). Em um dos emails, Olof Johansson orgulhosamente relata[19] que o código para mais plataformas ARM estão sendo adaptadas para obter informações do hardware necessárias para o boot destes dispositivos[20].

Este trabalho começa a dar frutos, com, de acordo com Johansson, algumas plataformas ARM agora sendo suportadas pelo Linux simplesmente ao adicionar os arquivos das arvores do dispositivo, que são completamente independentes do código fonte do kernel. Mais informações sobre a revisão do código do ARM e sobre os esforços para criar o binário do kernel que possa bootar em muitas plataformas ARM diferentes podem ser encontrados nos artigos mais recentes do LWN.net ("LinuxCon Japan: One zImage to rule them all[21]").
 
Diversos
Uma coleção dos patches[22] limpa o código para x86 e faz com que a tabela de exceção seja ordenada durante o tempo de construção do kernel, o que pode melhorar um pouco o tempo de inicialização (1[23], 2[24]).
 
Mudanças no KVM[25] adiciona uma nova API[26] para injeção de mensagens Message Signalled Interrupt (MSI) no sistema convidado.
 
Mudanças importantes [27] ao código do Xen incluem suporte para o perf[28].
 
Uma revisão [29] do escalonador de processos devem aprimorar o comportamento deste em sistemas NUMA. Ao mesmo tempo, várias funções obsoletas[30] para o escalonamento de processos de economia de energia, os quais, de acordo com os desenvolvedores, fazem mais mal do que bem, foram removidas[31].
 
Documentação adicionadas ao kernel[32] explica o uso do stub do boot EFI, que possibilita que firmwares EFI iniciem o kernel diretamente. Esta função foi adicionado dentro do kernel no Linux 3.3[33] e é utilizada pelo recentemente lançado bootloader gummiboot[34].
 
Grandes alterações[35] ao código do "error detection and correction (EDAC)" possibilita que, no futuro, o kernel provera informações mais precisas onde o erro na memória ocorreu.
 
O novo parâmetro do kernel "skew_tick" [36] permite aos usuários controlar o timer ticks, que pode ser útil para a redução do jitter em cargas de HPC e RT, mas em contrpartida aumenta o consumo de energia.
 
O suporte para o antigo Micro Channel Architecture (MCA), que esta obsoleto por ao menos uma década, finalmente foi removido[37]. Suporte para o ARMv3[38] e o ixp23xx e ixp2000[39] (intel XScale) também foram removidos.
 
Links
[1] http://git.kernel.org/linus/2b144498350860b6ee9dc57ff27a93ad488de5dc
[2] http://git.kernel.org/linus/8ab83f56475ec9151645a888dfe1941f4a92091d
[3] http://git.kernel.org/linus/0326f5a94ddea33fa331b2519f4172f4fb387baa
[4] http://git.kernel.org/linus/f3f096cfedf8113380c56fc855275cc75cd8cf55
[5] http://git.kernel.org/linus/225466f1c2d816c33b4341008f45dfdc83a9f0cb
[6] http://thread.gmane.org/gmane.linux.kernel/1314333
[7] http://sourceware.org/systemtap/
[8] http://git.kernel.org/linus/654443e20dfc0617231f28a07c96a979ee1a0239
[9] http://lwn.net/Articles/499190/
[10] https://lkml.org/lkml/2012/7/7/121
[11] http://git.kernel.org/linus/f7d82350e597d76dc8765a55c7849843395728b0
[12] http://git.kernel.org/linus/aaf045f72335653b24784d6042be8e4aee114403
[13] http://thread.gmane.org/gmane.linux.kernel/1301391
[14] http://git.kernel.org/linus/51a0d455b5f44cb4680e0a89f99860b669e40d0f
[15] http://git.kernel.org/linus/450bbd493d436f9eadd1b7828158f37559f26674
[16] http://lwn.net/Articles/443510/
[17] http://thread.gmane.org/gmane.linux.kernel/1301246/
[18] http://thread.gmane.org/gmane.linux.kernel/1303853
[19] http://thread.gmane.org/gmane.linux.kernel/1301246/focus%3D1301253
[20] http://lwn.net/Articles/496400/
[21] http://lwn.net/Articles/501696/
[22] http://thread.gmane.org/gmane.linux.kernel/1302087
[23] http://git.kernel.org/linus/1dbdc6f177c627ae462752c80a5c7f3b06a7f92a
[24] http://git.kernel.org/linus/d405c60128a1973648058fa950a8960ec1f27e38
[25] http://thread.gmane.org/gmane.linux.kernel/1301443
[26] http://git.kernel.org/linus/07975ad3b30579ca27d880491ad992326b930c63
[27] http://thread.gmane.org/gmane.linux.kernel/1301736
[28] http://git.kernel.org/linus/f447d56d36af18c5104ff29dcb1327c0c0ac3634
[29] http://git.kernel.org/linus/cb83b629bae0327cf9f44f096adc38d150ceb913
[30] http://lwn.net/Articles/474915/
[31] http://git.kernel.org/linus/8e7fbcbc22c12414bcc9dfdd683637f58fb32759
[32] http://git.kernel.org/linus/0c7596621e313bfcfbacb288e768c7150f5de9e0
[33] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-3-Part-3-Architecture-and-infrastructure-1463482.html
[34] http://www.h-online.com/news/item/Gummiboot-is-an-EFI-boot-loader-that-just-works-1628719.html
[35] http://thread.gmane.org/gmane.linux.kernel/1304940
[36] http://git.kernel.org/linus/5307c9556bc17e3cd26d4e94fc3b2565921834de
[37] http://git.kernel.org/linus/bb8187d35f820671d6dd76700d77a6b55f95e2c5
[38] http://git.kernel.org/linus/4cdfc2ec72e940abb4322aa1bc14f43a1486fc5d

Tag(s): Kernel Linux Software Livre Desenvolvimento

É preciso esta logado para comentar