Você está na página 1de 5

UNIVERSIDADE FEDERAL DO CEARÁ - ​CAMPUS ​QUIXADÁ

PROGRAMA DE PÓS GRADUAÇÃO EM COMPUTAÇÃO - PCOMP

Aluno: ​Lucas Ferreira Mendes


Disciplina: ​Análise de Desempenho
Matrícula: ​503567
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.
● 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.

Você também pode gostar