O que está contido nesses endereços?

4

Eu estou trabalhando no recurso de replay de gravação de múltiplos processadores de uma máquina virtual. Eu tenho um log de acesso à memória não-determinística feito na máquina virtual por CPUs virtuais.
Uma proporção muito alta delas aponta para a memória do espaço do kernel, ou seja, acima de 0Xc0000000.
Por exemplo, aqui está uma lista de 10 endereços de memória do kernel mais acessados após a execução do benchmark SPLASH na máquina Virtual

0xfffb5000                                                    
0xc1779db0                                               
0xc18b6910                                                      
0xc1771a44                                                      
0xc1771a40                                                      
0xc1779e00                                                      
0xc18b67e0                                                      
0xc18b693c                                                      
0xc18b67f0                                                      
0xfffa1000

Eu quero saber se existe alguma maneira de encontrar o que exatamente está nesse endereço de memória ... é a pilha do kernel, a página vsyscall, a lista pronta do agendador ...
Para que eu possa pensar em alguma maneira de resolver essa sobrecarga para acelerar o replay ... Dicas para onde procurar no código do kernel são bem-vindas

Obrigado

    
por Deepthought 30.12.2012 / 18:20

3 respostas

1

Em uma máquina física, eu daria uma olhada em /boot/System.map* (qualquer que seja esse arquivo chamado em sua distribuição).

Meu palpite é que o mesmo acontece em uma VM KVM.

    
por 30.12.2012 / 21:41
1

O KVM-QEMU suporta depuração - você pode se conectar à máquina virtual com gdb e ver o que está acontecendo lá (você precisará configurar os símbolos de depuração corretamente, é claro).

    
por 30.12.2012 / 23:02
0

Bem,   parte do endereço aponta para dados estáticos nos incrementadores do kernel Ex usados pelo seqlocks.
Um objdump do kernel revela cerca de metade desses endereços, mas para aqueles que são armazenados na pilha e o heap objdump não tem nenhum uso ...

cat /proc/kallsysm revela todas as variáveis / funções que foram exportadas pelo módulo que as contém.

Eu não acho que podemos saber o que foi armazenado nesses locais ....

    
por 01.01.2013 / 12:47