• 25/03/2009 - Rebuilding nanobechmarks
Desculpem a falta de atualização. Muitas coisas aconteceram no mês de março.
Bem, houve algumas modificações no Plano de Atividades.
Como não foram encontrados à disposição os nanobechmarks comentados no últimos post, a partir das descrições feitas no artigo, também citado no último post, estamos recriando os nanobechmarks.
A idéia é ter esses nanobechmarks prontos para que, a cada novo acréscimo no modelo do MIPS-vt, possamos testar a nova versão e comparar seu desemprenho com a antiga versão.
No momento estamos dando prioridade para a implementação dos nanobechmarks.

  • 04/02/2009 - Virtualization nanobenchmarks
Terminanda a modelagem do suporte de hardware à virtualização da memória, chega o esperado momento de testar.
Inicialmente foi solicitado a um fabricante de MMV que compartilhasse conosco alguns trechos de código com cargas de trabalho características de um MMV, mas parece que isso não será possível. Assim, estamos procurando novas fontes de benchmarks para sistemas virtualizados.
A dificuldade de encontrar benchmarks completos com características de aplicações virtualizadas reais, como os disponíveis para sistemas não virtualizados, é grande. Então, resolvemos nos voltar para nanobenchmarks citados em "Adams, K, Agesen, O. A Comparision of Software an Hardware Techniques for x86 Virtualization,2006". Cada um desses nanobechmarks estressa uma característica diferente de sistemas virtualizado. Em breve teremos os resultados.
  • 10/01/2009 - A new year
Depois das festas de fim de ano, recomeçam os trabalhos. Breve novos releases.
Com a disponibilização de SVN feita pelo Codeplex, em breve o projeto estará disponível nesse sistema e ficará mais fácil para pessoas que desejam colaborar.
  • 16/12/2008 - Multi-core implementation
Estou enfrentando algumas dificuldades para implementar a tabela de páginas extendida, pois não é tão claro como os modelos do ArchC acessam a tabela já existente. Acredito que para sanar esses problemas terei que implementar novas funções do ArchC, isso demora um pouco, mas é possível.
Para não ficar somente tentando implementar a tabela de páginas extendida, resolvi retomar a implementação do sistema com múltiplos núcleos, ou seja, colocar o que já está pronto modelado em um sistema com vários núcleos. Já estou compilando um modelo com 2 núcleos que possui em cada núcleo o suporte de virtualização modelado até o momento: instruções de virtualização, estruturas de virtualização (VMCS) e o VPID. Logo que realizar alguns testes para validar esse modelo e garantir que está tudo ocorrendo como deve ser, irei diponibilizá-lo.
  • 06/11/2008 - Extended Page Table implementation
Então, semana passada muitos de nós do projeto de interoperabilidade estávamos em Campo Grande participando do SBAC-PAD (veja descrição aqui).
Essa semana retomamos os trabalhos para a implementação de tabela de páginas extendida (veja mais detalhes aqui).

  • 30/10/2008 - SBAC-PAD/WSCAD participation and VPID implementation
Estou aqui em Campo Grande, Mato Grosso do Sul, assistindo ao SBAC-PAD e WSCAD. Em breve divulgarei descrição completa do evento, mas posso adiantar que está sendo muito produtivo.
Sobre o trabalho com Virtualização da Memória, o VPID já foi implementado. Agora estou trabalhando para acrescentar a nova TLB, para isso será necessário adicionar uma nova Tabela de Páginas (Extended Page Table).
Em breve terei mais novidades.

  • 02/10/2008 - WSPPD and VPID Implementation
As novidades são que o artigo para o WSPPD foi aceito e apresentado no dia 19 de setembro, veja aqui o artigo, em inglês, a apresentação, em português, e uma breve descrição de como foi o evento.
Bem, esse artigo fala justamente do suporte de virtualização à memória fornecido atualmente pelos processadores. São abordados principalmente dois aspectos desse suporte:
  • uma nova TLB, que traduz o endereço virtual do sistema operacional hospedado para o endereço físico do hipervisor
  • o VPID (Virtual Processor Identifier) que identifica a quais processadores virtuais os endereços guardados na TLB e na cache pertencem, evitando a necessidade de limpar essas mesmas TLB e cache a cada VM-entry ou VM-exit.
Iniciamos com a implementação do VPID. Ele será um novo campo de dados do VMCS, e todos os endereços traduzidos deverão ser prefixados pelos VPID de seus respectivos processadores virtuais.
Tivemos alguns problemas com início da modelagem pois não conseguiamos fazer o download dos modelos com hiearquia de memória do portal do ArchC. Parece que eles estão com algumas dificuldades, mas já estão ajeitando. Sem poder baixar os modelos do site, procuramos alternativas e encontramos esse link com todos os modelos e ferramentas do ArchC, a única coisa que não encontramos foi os benchmarks (cargas de trabalho), se alguém souber um lugar de onde possamos baixar, por favor, comente aqui.
  • 27/08/2008 - Memory Virtualization
O início deste semestre foi dedicado ao estudo das técnicas de memória utilizadas nos processadores com suporte de hardware à virtualização. O acesso à memória é sempre um momento crítico no desempenho dos sistemas, inclusive dos sistemas virtualizados. O fato de realizar constantes trocas de contexto entre diversas máquinas virtuais pode levar a um baixo desempenho dos sistemas de cache, por exemplo, pois, na ausência de recursos de hardware, as caches devem ser limpas cada vez que é trocada a Máquina Virtual em execução.
Pretendemos estender o modelo que já possui as instruções de virtualização para também incluir algumas técnicas de virtualização de memória em hardware.
Nas últimas 2 semanas escrevemos um artigo para submissão em mais um WSPPD (Workshop de Processamento Paralelo e Distribuído), o de 2008. Este artigo versa justamente sobre as técnicas de virtualização de memória utilizadas na tecnologia Intel VT. Depois da divulgação da avaliação do artigo e de eventuais correções sugeridas pelos avaliadores, disponibilizaremos ele aqui no portal.
  • 14/07/2008 - WCAE Presesentation
Então fomos para apresentar o artigo no WCAE 2008 e participar do ISCA 2008, em Beijing, China. Viajamos dia 18 e voltamos dia 28. Logo darei um depoimento mais detalhado na seção Participações e Eventos.
Por enquanto queremos dizer que voltamos e, apesar das correrias de final de semestre e para mim, Manuela, final de curso, trabalho de conclusão entre outros, colocaremos assim que possível novas informações aqui no portal.
  • 26/05/2008 - Paper Accepted in WCAE
Bem, sabem aquele material sobre como utilizar o MIPS-vt (MIPS com instruções de vitualização) para a educação? Foi feito um artigo para submissão no WCAE 2008 que ocorre junto com o ISCA 2008 em Beijing, China.
E o artigo foi ACEITO!!!! Estamos preparando a apresentação do trabalho que será feita no dia 23 de junho.
Assim que ocorrer o evento, divulgaremos o artigo e a apresentação aqui no portal.

Outra coisa, agora o portal do VISA tem uma versão em inglês. Essa versão possui um resumo do que já está presente na versão em português.
  • 28/04/2008 - Using MIPS-vt to Understanding the Hardware Virtualization Support
Passei as últimas semanas terminando o material que mostra como utilizar o modelo de MIPS com instruções de virtualização (MIPS-vt) para ensinar em sala de aula. O material ficou tão bom que estamos tentando submeter para algum evento, por esse motivo ainda não foi divulgado aqui.
Com o MIPS-vt implementado usando ArchC2.0 é possível começar a modelagem em múltiplos núcleos. Vou fazer isso seguindo as dicas dadas em "R. Azevedo, S. Rigo e G. Araújo, Projeto e Desenvolvimento de Sistemas Dedicados Multiprocessados", que explica como modelar com múltiplos núcleos usando o ArchC em conjunto com o SystemC e tem um exemplo passo-a-passo.

  • 7/04/2008 - Upgrading the model to ArchC 2.0
Essa semana terminei a implementação do modelo do MIPS com instruções de virtualização baseadas na Intel VT-x utilizando ArchC 2.0. Esse novo modelo é monociclo (sem pipeline). Essa tradução foi feita para facilitar a implementação do modelo em múltiplos núcleos, pois o ArchC 2.0 fornece opções melhores e mais fáceis para a modelagem de múltiplos núcleos.

Ainda estou escrevendo o material para utilização do modelo no ensino.
  • 10/03/2008 - A New Test
Com a intenção de comparar o tempo necessário para fazer as trocas de contexto entre máquinas virtuais no MIPS original e no MIPS com instruções de virtualização, foi definido um teste com as seguintes cararcterísticas:
  • 3 máquinas virtuais com cargas de trabalho diferentes
  • diversas trocas de contexto entre as diferentes máquinas virtuais serão realizadas ao longo da execução.
Esse teste será executado nas duas versões do MIPS para comparar os resultados. Abaixo está o corpo do teste:
teste.jpg
  • 15/02/2008 - Caracterization for Virtualization Benchmarking
Em relação às características da carga de trabalho habitual de um hipervisor, encontrei o artigo: Casazza, J. P., Greenfield, M., Shi, K. (2006) "Redefining Server Performance Characterization for Virtualization Benchmarking", Intel Technology Journal. Nesse artigo os autores esclarecem que não é possível analisar máquinas virtualizadas utilizando somente os benchmarks comuns, pois eles não levam em consideração a divisão dos recursos reais entre as diversas máquinas virtuais, assim, o artigo fornece uma metodologia para criar uma carga de trabalho para um benchmark.

A documentação para auxiliar professores em aula está sendo elaborada.
  • 18/01/2008 - Running the test
O modelo está funcionando perfeitamente. Executei algumas instruções que geraram as seguintes estatísticas:
fig_estatisticas.jpg
Nas estatíticas pode-se ver nas linhas 5, 6 e 7, informações sobre a execução total, em seguida, as estatísticas referentes às instruções executadas. Por último, há detalhes sobre a utilização dos bancos de registradores e dos registradores contidos no pipeline.

Atualmente estou procurando características da carga de trabalho habitual de um hipervisor (instruções mais executadas) sem a utilização de suporte à virtualização para formular um benchmark.

Em paralelo, estou elaborando um documento que auxilie professores na utilização do modelo produzido em ArchC para demonstrar e exercitar os conceito de suporte à virtualização.

  • 18/12/2007 - Write/Submit a peper in ERAD
Dediquei esta semana para escrever um artigo para o ERAD 2008. O artigo descrever as modificações feitas no MIPS R3000 para que ele oferecesse suporte de hardware à virtualização inspirado na tecnologia Intel VT-x. Esse artigo foi submetido e espera aceitação.
Amanhã será a viagem de integração do grupo do projeto para a Microsoft em São Paulo, na volta pretendo ter mais coisas para contar.

  • 07/12/2007 - Model Finished
Acrecentei o registrador de estado de privilégio da CPU no MIPS e para poder acessá-lo, acrescencei a instrução MOV, pois esses registradores não podem ser acessados pelas instruções lw (load) e sw (store).
Agora o modelo está funcionando corretamente com as instruções VT-x. O que está faltando é fazer os benchmarks para comparar a execução da carga de trabalho de um hipervisor no MIPS original em relação ao MIPS com as instruções VTX.

  • 20/11/2007 - Adjusting the Model
Ao fazer a implementação dos teste, reparei que seria necessário acrescentar alguns registradores de controle, tais como registradores de nível de privilégio e de base da tabela de páginas. Esses registradores devem ser acrescentados porque há algumas instruções que são sensíveis (veja em Documentação Conceitos de Virtualização) somente se estiverem fazendo acesso a esses registradores de controle.
Esses registradores existem na especificação do MIPS, eles apenas não estavam no modelo disponibilizado no site do ArchC, pois esse modelo é simplificado.
Estou agora fazendo essas alterações no modelo de processador.
  • 17/10/2007 - Design a Test
Bem, terminei a implementação do subconjunto de instruções da tecnologia Intel VT-x, e acrescentei 2 instruções ao subconjunto inicial: VMPTRLD e VMPTRST. Além das instruções, foram adicionados alguns registradores para indicar quando o processador está executando em VMXON entre outras coisas (veja em Documentação "Detalhes da Tecnologia Intel VT-x).

Agora estou elaborando os testes. A idéia é fazer dois códigos assembly:
  • 1) Um não utiliza as instruções VT-x e para toda a instrução executada, testa se essa instrução é sensível e só pode ser executada pelo hipervisor. Nesse caso, é feita a troca de contexto da máquina virtual hospedada para o hipervisor, tudo em assembly.
  • 2) O segundo código utiliza as instruções VT-x, assim as instruções quando executadas em modo VMXON são automaticamente testadas para verificar se são ou não instruções sensíveis. Caso sejam sensíveis, a troca de contexto da máquina virtual para o hipervisor é feita automaticamente.
Em resumo, a idéia é testar a troca de contexto e monitoramento de instruções feito em assembly (sem utilizar as instruções Intel VT-x) contra a troca de contexto e monitoramento feita utilizando as instruções e estruturas da tecnologia Intel VT-x (que realizam a troca de contexto com uma instrução só).

  • 26/09/2007 - Modeling Intel VT-x for the MIPS: Instructions
Esta semana estou terminando a implementação das principais instruções da tecnologia Intel VT-x: VMXON, VMXOFF, VMLAUNCH, VMRESUME, VMCALL e VMCLEAR (veja em Documentação "Detalhes da Tecnologia Intel VT-x).
Por enquanto o número de máquinas virtuais é fixo, mas futuramente isso será modificado para fazer a alocação dinâmica de memória das regiões do VMCS de cada máquina virtual.
Acredito que até o final desta semana estarei simulando alguns programas de teste.
  • 14/09/2007 - Modeling Intel VT-x for the MIPS: VMCS
Estamos começando uma fase nova do projeto, e, para comemorar, resolvemos montar um blog. O objetivo é que em períodos onde não há muita documentação a ser publicada, pois estamos trabalhando na parte de implementação, seja possível fazer uma publicação informal das atividades da semana.

Bem, durante essa semana, então, estou fazendo a adaptação da tecnologia Intel VT-x para o modelo do MIPS R3000 que está publicado no site da ferramenta ArchC. Essa adaptação não tem sido muito fácil, pois o modelo que estou utilizando do MIPS está bastante simplificado, o que está exigindo uma simplificação dos conceitos da tecnologia também.
As principais simplificações são em relação ao VMCS (Virtual Machine Control Structure), é nele onde ficam armazenados os estados do hospedeiro e do convidado quando é feita a troca de contexto deles no processador. Na versão para o MIPS haverá somente um VMCS por máquina virtual, e haverá um processador virtual para cada máquina virtual. Originalmente na tecnologia Intel VT-x uma máquina virtual pode ter vários processadores lógicos.

Last edited Apr 6, 2009 at 6:43 PM by mkferreira, version 54

Comments

No comments yet.