Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO CEARÁ - CAMPUS QUIXADÁ PROGRAMA DE PÓS GRADUAÇÃO EM COMPUTAÇÃO - PCOMP Aluno: Lucas Ferreira Mendes Matrícula: 503567 Disciplina: Análise de Desempenho Trabalho 05: Relatório do Benchmark 1 - Nome do Benchmark Benchmark-AD CLI: Benchmark em linha de comando para teste de desempenho de Processador, Memória Principal e Disco Rígido utilizando operações de Álgebra Linear em Matrizes. 2 - Descrição O Benchmark-AD CLI é uma implementação de benchmark para análise de desempenho de sistemas computacionais com ambiente Linux. Desenvolvido para ambientes Linux, utilizando as linguagens: Python e Shell Script. Executa uma série de operações de Álgebra Linear com inteiro e ponto flutuante a fim de analisar o desempenho da CPU da máquina. Além disso, realiza testes de escrita e leitura no Disco Rígido e na memória principal. Ao final, exibe gráficos e relatórios de desempenho com auxílio das bibliotecas Pandas, Numpy e Matplotlib. 3 - Arquitetura do Benchmark O programa desenvolvido e apresentado nesse relatório, pode ser representado em uma arquitetura constituída por três módulos que se comunicam: módulo principal, módulo de benchmark e módulo de relatório. Uma visão geral e detalhes sobre cada módulo são apresentados na Figura 1. Figura 1. Arquitetura do Benchmark-AD CLI 4 - Detalhes do Código O programa foi desenvolvido em Shell Script e Python, possuindo seu código fonte disponível: https://github.com/lucasifce/benchmark-ad.git. O módulo principal, benchmark-ad.sh, de interação com o usuário é desenvolvido em Shell Script, possibilitando seu uso no terminal. O usuário deve passar dois parâmetros: Número de Testes e Nível da Carga de Trabalho. Após validar os parâmetros fornecidos pelo usuário, o módulo principal faz chamadas aos módulos de benchmark: benchmark-cpu.py, benchmark-mem.sh e benchmark-hd.sh. Os dados obtidos em cada teste são armazenados em arquivos .csv e lidos pelo módulo de geração de relatório e gráficos, resultado.py, que utiliza as bibliotecas numpy, pandas e matplotlib para tratamento e geração de gráficos e dados estatísticos. Uma visão sobre a estrutura de pastas e arquivos do projeto, pode ser visualizada na Figura 2. Figura 2. Estrutura de pastas e arquivos do programa. 5 - Métricas e Cargas de Trabalho As métricas selecionadas para análise no benchmark desenvolvido, foram: ● CPU: Tempo de execução de operações de álgebra linear com matrizes (em segundos). ● Disco Rígido: Taxa de Leitura e Escrita de dados (em MB/s) ● Memória Principal: Taxa de Leitura e Escrita de dados (em GB/s) As cargas de trabalho são divididas em três níveis como a seguir: ● Baixo: ○ Utiliza operações em matrizes 512x512 para teste de CPU. ○ Utiliza 400 MB de dados para teste de HD. ○ Utiliza 512 MB de dados para teste de Memória Principal. ● Moderado: ○ Utiliza operações em matrizes 1024x1024 para teste de CPU. ○ Utiliza 800 MB de dados para teste de HD. ○ Utiliza 1 GB de dados para teste de Memória Principal. https://github.com/lucasifce/benchmark-ad.git ● Alto: ○ Utiliza operações em matrizes 2048x2048 para teste de CPU. ○ Utiliza 1.6 GB de dados para teste de HD. ○ Utiliza 2 GB de dados para teste de Memória Principal. 6 - Manual de Instalação e Operação A instalação do programa desenvolvido é simples, sendo necessário somente baixar os arquivos na estrutura apresentada acima e tornar os scripts executáveis, caso não estejam. Após isso, o script benchmark-ad.sh [repeticoes] [nivel] na pasta principal deverá ser executado com permissões de super usuário usando o comando sudo antes da chamada ao script. O parâmetro [repeticoes] é um número inteiro que define a quantidade de repetições para os testes de desempenho. Já o parâmetro [nivel] é um número inteiro entre 1 e 3, que define o nível da carga de trabalho a ser aplicada aos testes (1 - Baixo, 2 - Moderado, 3 - Alto). Ao executar o script principal, automaticamente será feita a verificação das dependências necessárias, em caso de não encontrar os pacotes necessários o programa faz o download e instalação das dependências. São elas: ● Gerenciador de Pacotes do Python 3: pip3; ● Bibliotecas do Python: numpy, pandas e matplotlib; O único pré-requisito que se faz necessário à execução do benchmark é ter o Python 3 instalado no computador. 7 - Exemplos de Utilização Para um melhor entendimento da forma de utilização e do funcionamento do programa desenvolvido, é apresentado a seguir um exemplo de utilização aplicando 15 repetições e nível moderado da carga de trabalho. Dentro da pasta principal do benchmark o arquivo benchmark-ad.sh deverá ser chamado com privilégios de super usuário, passando os dois parâmetros necessários, como apresentado anteriormente. Abaixo é apresentado um exemplo de chamada ao script principal: ➢ :$ sudo ./benchmark-ad.sh 15 2 Após isso, será solicitado a senha do usuário e dado início ao processo de verificação e instalação de dependências, caso necessário. Vale ressaltar que há a necessidade de execução com privilégios de super usuário, pois o programa tenta fazer a instalação das dependências faltantes e utiliza escrita em disco e memória para os testes. Caso o comando não seja executado com o sudo, essa permissão será solicitada no início da execução dos módulos de benchmark. Ao executar o script como mostrado acima, os módulos de benchmark serão executados com 15 repetições cada um, aplicando o nível moderado (2) de carga de trabalho e os dados captados serão armazenados em arquivos .csv na pasta “resources/resultdos/”. O módulo de relatório, por sua vez, acessa os dados armazenados nestes arquivos e realiza os cálculos estatísticos básicos (média, variância e desvio padrão), bem como prepara os gráficos para a plotagem. Ao final, os gráficos são exibidos em uma janela de interface gráfica, como apresentado na Figura 3 e o relatório final com dados da máquina e do teste realizado é apresentado na saída padrão do sistema, como demonstrado nas Figuras 4 e 5. Figura 3. Resultados obtidos na execução do benchmark. Figura 4. Relatório da máquina onde foram realizados os testes. Figura 5. Relatório com dados estatísticos dos testes realizados pelo benchmark.
Compartilhar