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