relatorio_final

Propaganda
UNIVERSIDADE FEDERAL DA BAHIA
PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO
Programa Institucional de Bolsas de Iniciação Científica
PIBIC
Relatório Final – Parte I
Título do Plano de
Trabalho do Bolsista
Título do Projeto do
Orientador
Implementação de Algoritmos Adaptativos para
gerenciamento de memória utilizando Teoria de
Controle no Sistema Operacional Linux
Gerenciamento de Memória Adaptativo em Sistemas
Operacionais de Código Aberto
Nome do Aluno
Eduardo Ramos dos Santos Júnior
Nome do Orientador
Luciano Porto Barreto
Grupo de Pesquisa
(opcional)
Palavras Chave
(até 3)
Período de Vigência
Gerência de Memória – Controle – Adaptativo
AGOSTO DE 2006 A JULHO DE 2007
Resumo (máximo de 220 palavras)
Apresente sucintamente a delimitação do problema, o(s) objetivo(s) do trabalho, os principais
resultados e conclusões.
O escopo do problema está no gerenciamento de memória no sistema operacional Linux, mais
especificamente na taxa de uso de memória e no overhead adicional que o tratamento de candidatas de
páginas a serem substituídas geram no sistema.
O objetivo do trabalho está em modelar um ambiente simplificado, que com auxílio da teoria do controle,
reduzir o overhead causado no tratamento de falha de páginas.
Os principais resultados são a identificação das variáveis chaves no processo de gerenciamento. Temos em
mãos o que medir (controlar) e o que alterar (atuar), suficientes para modelo simples, SISO (single input,
single output).
Assim, a partir daí simulações poderão serem feitas o intuito de verificar o comportamento da taxa de uso da
memória para padrões de acesso (de programas do mundo real ou não) em relação a determinados valores de
varreduras de páginas a serem escolhidas como candidatas a serem trocadas.
1. Introdução
Delimitação do problema trabalhado e as conexões entre o plano de trabalho do bolsista e o
projeto do orientador. Objetivos e justificativa do plano.
A delimitação do problema está no sub-sistema de gerenciamento de memória do linux.
Toda a memória é dividida em páginas, e sob demanda, essas páginas são alocadas para os
processos, para que assim eles possam executar.
Mas os Sistemas Operacionais modernos usam uma abstração para dar a ilusão de que o sistema
tem mais memória física que realmente tem disponível, chamada de memória virtual.
Tendo essa visão, os processos sempre vão requerer mais e mais memória, e o sistema precisa
gerenciar essa alocação e desalocação de memória. E muito processamento é gasto nesse
trabalho.
Na atual versão do kernel, a 2.6, os principais problemas são:

Escolha da página errada para troca, quando outros processos precisam de memória para
executar, algumas páginas de um tem que dar a vez a outros

Varredura excessiva em busca de páginas candidatas a serem substituídas.
No primeiro, o resultado imediato está na taxa de falha de páginas, pois a página escolhida pode
ser usada novamente num futuro próximo.
Já no segundo, o problema está no overhead, pois o sistema precisa percorrer uma lista de
páginas em busca daquelas a substituir, aumentando assim o overhead.
Visto a dinamicidade de operação dos sistemas operacionais modernos, sendo a maioria de
propósito geral, a previsão de seu comportamento é praticamente impossível.
Assim, a busca por cenários localizados e determinação de padrões podem levar a melhorias no
modo local do sistema operar. E com a ajuda da teoria do controle, o comportamento em tais
cenários pode ter uma intervenção, pode ser adaptado de forma a melhorar a forma como o
sistema executa, nesse caso em particular, como a gerência de memória é feita. E isso fica
facilitado em ambientes de código-fonte aberto, já que toda a estruturação do sistema está
disponível para estudo e modificação.
2. Materiais e métodos
Descrição da maneira como foram desenvolvidas as atividades para se chegar aos objetivos
propostos.
Para alcançar os objetivos propostos, foram feitas diversas leituras, especialmente sobre como é
organizada estrutura e funcionalmente o sistema de gerenciamento de memória num sistema
operacional de código aberto, em particular, no linux.
Feito isso, temos toda a organização desse sub-sistema de um sistema operacional conhecido,
além de como ele se relaciona com as outras partes do sistema e como o mesmo os modifica.
Além disso, estudos superficiais sobre teoria do controle foram feitos.
A modelagem de um sistema com o uso de teoria do controle, identificação das propriedades,
variáveis a serem controladas, variáveis a serem modificadas foi feito.
Pequenas intervenções foram feitas no código-fonte do linux com o intuito de entender o modo
como a gerência de memória funciona na prática, ou seja, no escopo da implementação. Mas a
maior parte do estudo se deu com leituras superficiais do código-fonte e de seus comentários,
fontes ricas de documentação.
Também foram feitas algumas reuniões com o orientador e conversas a respeito desses pontos.
Algumas pequenas apresentações internas foram feitas com o intuito de nivelar o conhecimento ao
menos superficial sobre esses pontos: gerência de memória, algoritmos de substituição de páginas
e teoria do controle. Junta-se a isso uma pequena apresentação na disciplina de Sistemas
Operacionais sobre gerência de memória no linux, apresentando alguns tópicos desse sub-sistema
como a estrutura básica de organização, processo de falha de páginas e tratamento da mesma.
3. Resultados
Relação dos resultados ou produtos obtidos durante a execução da pesquisa.
Tendo toda a teoria em mãos, algumas propostas foram lançadas e posteriormente analisadas
para verificação de sua viabilidade. E muitas delas não foram satisfatórias, muito devido a
complexidade desse sub-sistema do sistema operacional linux, que é uma das partes mais
importantes de um sistema operacional, se não o mais importante, pois toda operação num
sistema necessita ter memória física alocada para executar, também devido a dificuldade
encontradas na modelagem.
Assim, um cenário simplificado foi identificado, que busca diminuir um dos pontos relatados no
ponto acima: tentar diminuir o overhead gerado no sistema pela varredura de páginas em busca de
alguma(s) candidata(s) a se substituída.
As variáveis chaves no processo de gerenciamento de memória nesse cenário simplificado foram
identificadas. Aí, com o uso de teoria do controle, poderemos fazer uso delas para simular tal
cenário para verificar a influência de uma (o que controlar) na outra (o que atuar), considerando
como entrada para tais testes, padrões de entrada de programas da vida real: compilador,
navegador, editor de imagens, etc.
Tais testes ainda não foram efetuados, mas pretende-se no futuro concluir, com o intuito de gerar
dados que possam ajudar no modo de adaptar o comportamento dessa parte do gerenciamento de
memória, seja ela em qualquer sistema operacional, de preferência, naqueles de código fonte
aberto.
4. Discussão
Expor de modo sucinto a contribuição do seu plano ao projeto de pesquisa do orientador
apresentando as implicações para futuros trabalhos que podem ser desenvolvidos.
A contribuição no que essa identificação das variáveis a serem utilizadas pela teoria do controle,
para moldar o comportamento do sistema de gerenciamento de memória no linux ao longo de sua
execução está na modelagem de um ambiente simplificado para testes e na geração de dados que
podem guiar (seguindo-se ou evitando-se) no modo de atuação de um controlador para a gerência
de memória.
Outro ponto de contribuição pode estar em como esses dados a serem gerados podem ajudar
(principalmente em idéias) na minimização dos atuais problemas que o kernel linux 2.6 enfrenta, já
apresentados anteriormente.
Além disso, com todo o estudo feito em cima da teoria e implementação de gerenciamento de
memória no linux, contribuições podem ser dadas a comunidade de software livre, já que muitos
problemas estão em aberto apenas a espera de colaboradores. Algo inclusive que me foi proposto
por uma das pessoas que ajudaram a construir o kernel linux, Marcelo Tosatti.
5. Referências bibliográficas (máximo 15)
Relação itemizada das referências que subsidiaram a pesquisa, colocando as mais importantes.
1. Understanding the Linux Kernel
By Daniel P. Bovet, Marco Cesati
O'Reilly - 3rd Edition
2. Understanding the Linux Virtual Memory Manager
Mel Gorman
3. Feedback Control of Computing Systems
Joseph L. Hellerstein
Yixin Diao
Sujay Parekh
Dawn M. Tilbury
4. Dissertação de Hugo Henrique Cassettari
Análise de Localidade de programas e desenvolvimento de algoritmos adaptativos para
substituição de páginas
5. Article General Adaptive Replacement Policies
Yannis Smaragdakis
Georgia Institute of Technology
6.Process Management in Linux
Desktop Companion to the Linux Source Code
Kiran Divekar
Relatório Final – Parte II
1. Atividades realizadas no período
Descrever as atividades desenvolvidas ao longo do período da bolsa, indicando as dificuldades
encontradas. O bolsista que entrou em substituição a outro deve explicitar quando entrou e qual o
nome do aluno que está substituindo, bem como quem fez o relatório parcial e a entrevista.
As atividades se resumiram a:


Leituras bibliográficas para obtenção dos conhecimentos necessários sobre o contexto em
estudo.
Pequenas apresentações internas e externas com o intuito de nivelamento e compartilhamento
do conhecimentos
Poucas reuniões com o orientador para verificação do andar das coisas e conversas sobre a
pesquisa
Modelagens simples do que controlar no sistema de gerenciamento de memória do linux

Futuras simulações de tal cenário e adaptações ou modificações do mesmo.


As principais dificuldades encontradas foram:

Entendimento pleno do modo de funcionamento do kernel linux, em particular, do sistema de
gerenciamento de memória do linux, visto o “universo” de informações que ele guarda.

Dificuldade na utilização de abordagens científicas para modelagem de cenários

Dificuldade em conciliar as responsabilidades das pesquisas com outras atividades

Dificuldade em saber quando seguir em frente ou quando voltar nas diversas fases de
desenvolvimento da pesquisa
2. Participação em reuniões científicas e publicações
Relacionar as reuniões científicas e os títulos dos trabalhos apresentados pelo estudante durante a
vigência da bolsa. Incluir títulos de publicações que resultaram ou se beneficiaram de seu trabalho.
3. Anexos
Anexar os resumos ou trabalhos que foram apresentados pelo bolsista durante a vigência da bolsa.



Apresentação interna sobre gerência de memória no linux (no site abaixo)
Apresentação sobre gerência de memória no linux para a disciplina de Sistemas Operacionais
do DCC/IM (no site abaixo)
Criação de uma home-page com informações resumidas sobre:
* gerência de memória (genérico)
* gerência de memória no linux
* teoria do controle
* ferramentas para análise de memória no linux
* referências gerais e para modos de operação do controle de memória em outros Sistemas
Operacionais.
http://twiki.dcc.ufba.br/bin/view/ProjetoSouvenir/WebHome
Download