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
- Execução do script de monitoramento.
- Após 150 segundos, início da gravação de tela com o OBS Studio.
- Após 310 segundos, encerramento da gravação de tela.
- 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
)
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
| 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
| 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
| 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
| 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
| Before |
14.23200 |
0.5363986 |
| During |
12.95777 |
0.2986971 |
| After |
12.18662 |
0.1714172 |