Gerenciamento de memória em Xen

2

Eu entendo que xen aloca todo o requerimento de memória física do convidado quando iniciado. Também mantém uma tabela de páginas sombreadas (estou assumindo que usa struct page_info para manter isso. Estou correto? Se não alguém pode explicar?) Que desejo acessar pois preciso percorrer essa lista verificando se o convidado a quem esta página é atribuída pelo menos acessou uma vez.

Alguém pode me explicar como posso conseguir isso?

    
por Ravi Vooda 03.11.2012 / 10:42

1 resposta

3

Ravi,

Para responder à sua pergunta, estou supondo que você queira modificar o código-fonte do hypervisor e que você é um programador experiente do kernel do Linux. Se você não tem experiência com a codificação do kernel, provavelmente deve primeiro tentar um projeto mais simples de codificação do kernel para ganhar alguma experiência. Explicar como modificar o código da memória sombra do Xen está além do escopo do AskUbuntu. A resposta certamente não se encaixa em uma dessas respostas. O que você quer fazer é muito complicado.

Primeiro de tudo, struct page_info não é uma lista. É um tipo de dado abstrato do bloco de construção que é usado em mais de uma lista no hypervisor Xen. Então, por favor, diga-nos em qual lista você está olhando e que usa page_info.

Como você já viu, há uma contagem de referência em uma estrutura page_info, mas ela não pode ser usada diretamente para fazer o que você deseja, AFAIK. O ponteiro de volta _domain que você vê como parte da estrutura page_info é definido apenas para páginas que não estão sendo usadas como páginas de sombra.

O Xen pode ser configurado para fazer o que você diz, alocar toda a memória quando o convidado é iniciado, mas também pode ser configurado para usar balão e alocar memória mais tarde, tanto para cima quanto para baixo. Para saber mais sobre o driver de balão e esse tipo de alocação de memória, consulte o wiki Xen no link .

Há também um recurso chamado memória transcendental, conhecido como "tmem" na origem. Se configurado para usar o tmem, o Xen tirará a memória de um convidado que não o esteja usando, para fornecê-lo a outro convidado que precise dele mais. Portanto, há mais trabalho se você quiser modificar o hipervisor Xen para rastrear o acesso de convidado de toda a memória de sombra, executando em todos os modos possíveis de gerenciamento de memória.

Se você não está codificando o kernel, mas apenas solucionando problemas, é possível conectar um terminal serial ao hardware que está executando o Xen (consulte o wiki do Xen sobre como fazer isso) para ver o uso da memória. Uma vez que você tenha o terminal serial rodando corretamente, você pode não apenas falar com o dom0, mas apertando Ctrl-A 3 vezes, você pode falar com o hypervisor diretamente. Pressione "h" para obter uma lista de ajuda de comandos.

Atenciosamente,

Segfaultreloaded

    
por segfaultreloaded 08.11.2012 / 14:59