Atividade de Análise de Desempenho

Este projeto tem como objetivo apresentar os resultados coletados por meio de um script Shell, desenvolvido para monitorar os dados do computador durante um período de 10 minutos, seguindo as instruções fornecidas na atividade.

Passos do Teste Realizado

  1. Execução do script de monitoramento.
  2. Após 150 segundos, início da gravação de tela com o OBS Studio.
  3. Após 310 segundos, encerramento da gravação de tela.
  4. Após mais 150 segundos, encerramento da execução do script de monitoramento.

Configurações do Setup

Hardware Model: Dell Inc. Latitude 3490
CPU: Intel® Core™ i7-8550U CPU @ 1.80GHz × 8
Memory: 16,0 GB
Disk: LITEON CV8-8E256 256 GB

Script Utilizado para Monitoramento

Nesta seção, é apresentado o script utilizado para o monitoramento dos dados do sistema.

#!/bin/bash
# Script para monitoramento

now=`date +%s`
 
# Escreve o cabecalho de identificacao dos dados
#IO_READ(MB/s),IO_WRITE(MB/s)



echo "IO_READ;IO_WRITE;IO_QUEUE_LENGTH;IO_UTILIZATION;CPU_PERCENT_USR;CPU_PERCENT_SYS;CPU_PERCENT_IOWAIT;CPU_PERCENT_IDLE;MEM_FREE;MEM_USED;TIME;ELAPSED_TIME" >`echo monitor$now.csv`

echo "IO_READ IO_WRITE IO_QUEUE_LENGTH IO_UTILIZATION CPU_PERCENT_USR CPU_PERCENT_SYS CPU_PERCENT_IOWAIT CPU_PERCENT_IDLE MEM_FREE MEM_USED TIME ELAPSED_TIME"

count=0;
while [ True ]
do

    # Obtem os campos de interesse ( read(kB/s),write(kB/s), e cancelled(kB/s) )
    disk=`iostat -m -x -d sda| sed -n '4p' | awk '{print $3,$9,$22,$23}'`
    # Armazena somente os campos de interesse
    cpu=`mpstat| grep all | head -n1 | awk '{print $3,$5,$6,$12}'`
    # Obtem os campos de interesse ( Memoria total, livre, usada, buffers, cached, ... )
    memory=`free | grep Mem:`   

    IO_READ=`echo $disk | cut -d\  -f1`
    IO_WRITE=`echo $disk | cut -d\  -f2`
    IO_QUEUE_LENGTH=`echo $disk | cut -d\  -f3`
    IO_UTILIZATION=`echo $disk | cut -d\  -f4`
    CPU_PERCENT_USR=`echo $cpu | cut -d\  -f1`
    CPU_PERCENT_SYS=`echo $cpu | cut -d\  -f2`
    CPU_PERCENT_IOWAIT=`echo $cpu | cut -d\  -f3`
    CPU_PERCENT_IDLE=`echo $cpu | cut -d\  -f4`
    # Armazena somente os campos de interesse: Free, Used, Buffers, Cached, ...
    MEM_FREE=`echo $memory | awk '{print $4}'`
    MEM_USED=`echo $memory | awk '{print $3}'`

    # Obtem o tempo atual, no formato RFC3339: AAAA-MM-DD HH:MM:SS 
    # O tempo corresponde ao retorno do mpstat, 
    # portanto  o uso de cpu eh a media do ultimo minuto
    tempo=`date --rfc-3339=seconds`
    
    # Mostre na tela as informações capturadas pelos script
    echo $IO_READ $IO_WRITE $IO_QUEUE_LENGTH $IO_UTILIZATION $CPU_PERCENT_USR $CPU_PERCENT_SYS $CPU_PERCENT_IOWAIT $CPU_PERCENT_IDLE $MEM_FREE $MEM_USED $tempo $count
    # Escreve no arquivo as informações do disco
    echo $IO_READ\;$IO_WRITE\;$IO_QUEUE_LENGTH\;$IO_UTILIZATION\;$CPU_PERCENT_USR\;$CPU_PERCENT_SYS\;$CPU_PERCENT_IOWAIT\;$CPU_PERCENT_IDLE\;$MEM_FREE\;$MEM_USED\;$tempo\;$count>> `echo monitor$now.csv`

    #Executa o script a cada X unidade de tempo
    sleep 1
    count=`expr $count + 1`
done

Tratamento dos Dados

monitor <- read.csv("/home/chas/Documents/ufrpe/analiseDeDesempenho/atividades/monitor1734014956.csv",sep = ";")

monitor$IO_READ <- as.numeric(gsub(",", "\\.", monitor$IO_READ))
monitor$IO_WRITE <- as.numeric(gsub(",", "\\.", monitor$IO_WRITE))
monitor$IO_QUEUE_LENGTH <- as.numeric(gsub(",", "\\.", monitor$IO_QUEUE_LENGTH))
monitor$IO_UTILIZATION <- as.numeric(gsub(",", "\\.", monitor$IO_UTILIZATION))
monitor$CPU_PERCENT_USR <- as.numeric(gsub(",", "\\.", monitor$CPU_PERCENT_USR))
monitor$CPU_PERCENT_SYS <- as.numeric(gsub(",", "\\.", monitor$CPU_PERCENT_SYS))
monitor$CPU_PERCENT_IOWAIT <- as.numeric(gsub(",", "\\.", monitor$CPU_PERCENT_IOWAIT))
monitor$CPU_PERCENT_IDLE <- as.numeric(gsub(",", "\\.", monitor$CPU_PERCENT_IDLE))


execution_period_order <- c("Before", "During", "After")
# Separa os dados de acordo com o periodo 
dados <- monitor %>%
  mutate(EXECUTION_PERIOD = case_when(
    ELAPSED_TIME < 150 ~ "Before",
    ELAPSED_TIME >= 150 & ELAPSED_TIME < 460 ~ "During",
    ELAPSED_TIME >= 460 ~ "After"
  ))

dados$EXECUTION_PERIOD <- factor(
  dados$EXECUTION_PERIOD,
  levels = execution_period_order # Customize the order here
)

Plots Gerados

Tabelas Geradas

tabela_estatisticas <- dados %>%
  group_by(EXECUTION_PERIOD) %>%
  summarise(
    mean = mean(IO_READ, na.rm = TRUE),
    sd = sd(IO_READ, na.rm = TRUE),
  )

kable(tabela_estatisticas, caption = "Tabela de medias e desvio padrao para leitura")
Tabela de medias e desvio padrao para leitura
EXECUTION_PERIOD mean sd
Before 19.77693 1.0787570
During 15.57842 1.4016711
After 12.59424 0.4432252
tabela_estatisticas <- dados %>%
  group_by(EXECUTION_PERIOD) %>%
  summarise(
    mean = mean(IO_WRITE, na.rm = TRUE),
    sd = sd(IO_WRITE, na.rm = TRUE),
  )

kable(tabela_estatisticas, caption = "Tabela de medias e desvio padrao, Para escrita")
Tabela de medias e desvio padrao, Para escrita
EXECUTION_PERIOD mean sd
Before 1.799200 0.0821483
During 1.496548 0.0887637
After 1.297550 0.0348323
tabela_estatisticas <- dados %>%
  group_by(EXECUTION_PERIOD) %>%
  summarise(
    mean = mean(CPU_PERCENT_IDLE, na.rm = TRUE),
    sd = sd(CPU_PERCENT_IDLE, na.rm = TRUE),
  )

kable(tabela_estatisticas, caption = "Tabela de medias e desvio padrao para idle")
Tabela de medias e desvio padrao para idle
EXECUTION_PERIOD mean sd
Before 77.18800 0.9006001
During 79.39045 0.5231982
After 80.71106 0.2781418
tabela_estatisticas <- dados %>%
  group_by(EXECUTION_PERIOD) %>%
  summarise(
    mean = mean(MEM_USED, na.rm = TRUE),
    sd = sd(MEM_USED, na.rm = TRUE),
  )

kable(tabela_estatisticas, caption = "Tabela de medias e desvio padrao par mem usada")
Tabela de medias e desvio padrao par mem usada
EXECUTION_PERIOD mean sd
Before 2406963 48300.47
During 2770147 58414.24
After 2595708 78289.05
tabela_estatisticas <- dados %>%
  group_by(EXECUTION_PERIOD) %>%
  summarise(
    mean = mean(CPU_PERCENT_USR, na.rm = TRUE),
    sd = sd(CPU_PERCENT_USR, na.rm = TRUE)
  )

kable(tabela_estatisticas, caption = "Tabela de medias e desvio padrao para cpu usado")
Tabela de medias e desvio padrao para cpu usado
EXECUTION_PERIOD mean sd
Before 14.23200 0.5363986
During 12.95777 0.2986971
After 12.18662 0.1714172