Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Introdução! 4
Materiais e Métodos! 4
Hardware! 4
Software! 4
Stress! 4
Monitoração do sistema! 5
iostat! 5
vmstat! 5
Metodologia ! 5
Análise gráfica ! 6
Resultados e conclusões! 6
Graficos 2D! 6
Utilização de Disco X stress de CPU! 6
Graficos 3D! 18
Utilização de disco x stress de CPU x stress de IO! 19
2
Utilização de CPU x stress de CPU x stress de IO! 20
Apêndice! 23
scripts! 23
A-) tdesempenho.sh! 23
B-) cleaniostat.sh! 28
C-) cleanmpstat.sh! 29
D-) cleanvmstat.sh! 29
E-)fixstats.sh! 30
Referências Bibliográficas! 30
3
Introdução
O
primeiro
projeto
da
disciplina
de
análise
de
desempenho
de
sistemas
de
computação
consiste
em
medir
o
desempenho
de
CPU,
memória
e
entrada/saída(disco)
e
gerar
gráZicos
e
medidas
probabilísticas.
Foi
sugerido
pelo
professor
utilizar
o
Linux
como
sistema
operacional
,sobre
um
hardware
qualquer,
para
coletar
os
dados
de
5
em
5
segundos.
Esse
dados
consistem
em
utilização
da
CPU,vazão
de
discos,
numero
de
interrupções
por
segundo,
quantidade
de
memória
utilizada
e
variação
do
uso
da
memória
em
intervalos.
Primeiramente,
devemos
executar
os
testes
de
stress
individuais,
ou
seja,
somente
stress
de
CPU,
depois
somente
stress
de
I/O
e
depois
somente
stress
de
memória.
Numa
segunda
parte
devemos
combinar
stress
de
CPU
e
I/O.
Após
esses
dados
serem
coletados
devemos
plotar
gráZicos.
Para
executar
essas
operações
o
professor
indicou
ferramentas
estatísticas
como
o
“GNUPlot”
e
o
“R”.
Materiais
e
Métodos
Hardware
Para
executar
os
testes
utilizamos
um
MacBook
com
a
conZiguração:
Software
Instalamos
o
Ubuntu
v9.10
em
uma
maquina
virtual
VMWare
2.0.
Foram
dedicados
para
esta
máquina
virtual
um
núcleo
do
processador
e
1024MB
de
memória
RAM.
Stress
O
programa
stress
é
uma
ferramenta
utilizada
para
carregar
o
sistema
de
modo
a
possibilitar
testes
de
desempenho.
Está
ferramenta
sozinha
não
pode
ser
considerada
um
benchmark
pois
ele
não
gera
relatórios
comparativos
do
sistema,
para
tanto
nos
utilizamos
de
comandos
descritos
na
próxima
seção.
4
Para
rodar
este
programa,
a
seguinte
sintaxe
foi
utilizada,
stress
[OPTION[ARG]]
Nos
nossos
testes,
utilizamos
as
seguintes
opções:
-‐-‐cpu
N
dispara
N
processos
rodando
sqrt(),
dessa
forma
haverá
carga
da
CPU
pois
apenas
cálculos
são
utilizados.
-‐-‐hdd
N
dispara
N
processos
rodando
write()/unlink()
para
gerar
utilização
do
disco
-‐-‐vm
N
dispara
N
processos
rodando
malloc()/free(),
permitindo
se
testar
a
velocidade
de
alocacao
de
memória.
-‐-‐timeout
timeout
deve
ser
seguido
pela
quantidade
de
tempo
(seguida
da
unidade)
que
se
deseja
permitir
que
o
stress
rode.
Um
exemplo
de
utilização
do
stress
pode
ser
visto
a
seguir:
stress
-‐-‐cpu
5
-‐-‐hdd
5
-‐-‐timeout
10s
neste
caso,
disparamos
5
processos
para
carregar
a
CPU
e
5
processos
para
carregar
o
disco
durante
10
segundos.
Monitoração do sistema
Para
coletarmos
os
dados
utilizamos
os
comandos
,sugeridos
pelo
professor,
iostat,
vmstat
e
mpstat.
iostat
monitora
o
uso
da
CPU
em
nível
de
usuário
através
da
coluna
%user,
uso
da
CPU
em
nivel
de
sistema
através
da
coluna
%system,
o
tempo
que
a
CPU
Zicou
esperando
por
uma
entrada
ou
saida
de
disco
atraves
em
%iowait
e
outras
leituras.
vmstat
Comando
vmstat
que
monitora
o
numero
de
processos
esperando
para
rodar
na
coluna
%r,
numero
de
processos
em
sleep
ininterrompivel
em
%b,
a
quantidade
de
memoria
virtual
utilizada
na
coluna
%swpd,
quantidade
de
memoria
ociosa
em
%free,
quantidade
de
memria
utilizada
como
buffer
em
%buff,
quantidade
de
memoria
utilizada
como
cache
em
%cache,
quantidade
de
memoria
recuperada
do
disco
em
%si,
quantidade
de
memoria
jogada
no
disco
em
%so,
blocos
recebidos
de
um
dispositivo
de
blocos
em
%bi,
blocos
enviados
para
um
dispositivo
de
blocos
em
%bo,
numero
de
interrupções
por
segundo
em
%in,
numero
de
troca
de
contexto
em
%cs,
tempo
gasto
rodando
aplicações
do
usuario
em
%us,
tempo
gasto
rodando
aplicações
do
sistema(
kernel
code)
em
%sy,
tempo
em
que
a
CPU
Zicou
ociosa
em
%id
e
o
tempo
gasto
esperando
por
entrada/saida
em
%wa.
Metodologia
Foram
utilizados
scripts
que
auxiliaram
nos
testes.
Eles
serviram
para
automatizar
o
teste
ao
fazer
a
coleta,
o
tratamento
e
também
foram
usados
para
auxiliar-‐nos
a
plotar
os
gráZicos
pertinentes
a
analise
de
desempenho
em
questão.
5
Análise gráfica
Para
plotarmos
os
gráZicos
utilizamos
o
“R”
e
o
“GNUPlot”
rodando
sobre
o
Mac
OS
X
v10.6.3.
Resultados
e
conclusões
Graficos 2D
Segue
o
codigo
utilizado
no
software
R
e
os
respectivos
gráZicos,
de
acordo
com
os
dados
coletados.
Note
que
a
escala
do
eixo
y
não
é
Zixa
para
um
melhor
detalhamento
dos
dados.
iostatCPU1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU1.txt")
iostatCPU2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU2.txt")
iostatCPU5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU5.txt")
iostatCPU10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU10.txt")
x<-‐c(mean(iostatCPU1$V4),mean(iostatCPU2$V4),mean(iostatCPU5$V4),mean
(iostatCPU10$V4))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatCPU1",
"iostatCPU2",
"iostatCPU5",
"iostatCPU10"))
axis(2)
title(main=
"Uso
de
disco
estressando
CPU",xlab="fator
de
stress",ylab="uso
de
disco
(%)")
6
Utilização de Disco X stress de IO
iostatIO1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO1.txt")
iostatIO2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO2.txt")
iostatIO5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO5.txt")
iostatIO10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO10.txt")
x<-‐c(mean(iostatIO1$V4),mean(iostatIO2$V4),mean(iostatIO5$V4),mean
(iostatIO10$V4))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatIO1",
"iostatIO2",
"iostatIO5",
"iostatIO10"))
axis(2)
title(main=
"Uso
de
disco
estressando
IO",xlab="fator
de
stress",ylab="uso
de
disco(%)")
A
partir
do
gráZico,
podemos
notar
a
clara
relação
entre
IO
e
uso
do
disco,
além
disso,
notamos
que,
para
o
nosso
sistema,
o
ápice
foi
atingido
muito
cedo
(com
5
processos
escrevendo
no
disco)
logo,
ao
utilizar
10
processos
estes
5
a
mais
foram
bloqueados
por
não
poder
escrever
no
disco.
7
Utilização de Disco X stress de memória
iostatMB1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB1.txt")
iostatMB2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB2.txt")
iostatMB5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB5.txt")
iostatMB10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU10.txt")
x<-‐c(mean(iostatMB1$V4),mean(iostatMB2$V4),mean(iostatMB5$V4),mean
(iostatMB10$V4))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatMB1",
"iostatMB2",
"iostatMB5",
"iostatMB10"))
axis(2)
title(main=
"Uso
de
disco
estressando
memoria",xlab="fator
de
stress",ylab="uso
de
disco(%)")
Embora
exista
um
padrão
no
gráZico,
notamos
que
o
uso
de
disco
é
insigniZicante,
além
de
ser
contra
o
senso
comum,
uma
vez
que
o
uso
esta
diminuindo
com
o
aumento
do
número
de
processos.
Novamente,
concluímos
que
não
há
uma
relação
entre
o
uso
do
disco
com
o
stress
de
memória.
8
Utilização de CPU X stress de CPU
iostatCPU1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU1.txt")
iostatCPU2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU2.txt")
iostatCPU5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU5.txt")
iostatCPU10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU10.txt")
x<-‐c(mean(iostatCPU1$V1),mean(iostatCPU2$V1),mean(iostatCPU5$V1),mean
(iostatCPU10$V1))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatCPU1",
"iostatCPU2",
"iostatCPU5",
"iostatCPU10"))
axis(2)
title(main=
"Uso
de
CPU
estressando
CPU",xlab="fator
de
stress",ylab="uso
de
CPU(%)")
O
gráZico
segue
um
padrão
que
indica
o
aumento
da
atividade
da
CPU
com
o
aumento
de
processos
disparados
pelo
stress,
porém
ao
tentarmos
rodar
10
processos
notamos
uma
pequena
queda
na
utilização
da
CPU.
Isto
provavelmente
se
deve
ao
limite
de
carga
da
CPU
ter
sido
atingido,
fazendo
com
que
o
SO
mate
alguns
dos
processos
que
estão
na
Zila.
Devemos
lembrar
que
foi
utilizada
a
média
das
medições,
logo
ao
termos
muitos
processos
sendo
Zinalizados
isso
será
mais
aparente
no
gráZico.
9
Utilização de CPU X stress de IO
iostatIO1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO1.txt")
iostatIO2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO2.txt")
iostatIO5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO5.txt")
iostatIO10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatIO10.txt")
x<-‐c(mean(iostatIO1$V1),mean(iostatIO2$V1),mean(iostatIO5$V1),mean
(iostatIO10$V1))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatIO1",
"iostatIO2",
"iostatIO5",
"iostatIO10"))
axis(2)
title(main=
"Uso
da
CPU
estressando
IO",xlab="fator
de
stress",ylab="uso
de
CPU(%)")
O
gráZico
mostra
que
quanto
maior
o
número
de
processos
fazendo
IO,
menor
a
utilização
da
CPU.
Uma
possível
explicação
para
este
fato
é
que
enquanto
o
processo
está
fazendo
IO
a
CPU
Zica
em
idle
a
espera
do
Zim
desse
IO.
10
Utilização de CPU X stress de memória
iostatMB1<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB1.txt")
iostatMB2<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB2.txt")
iostatMB5<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatMB5.txt")
iostatMB10<-‐read.table("/Users/VHG/Desktop/teste
Mac/iostatCPU10.txt")
x<-‐c(mean(iostatMB1$V1),mean(iostatMB2$V1),mean(iostatMB5$V1),mean
(iostatMB10$V1))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("iostatMB1",
"iostatMB2",
"iostatMB5",
"iostatMB10"))
axis(2)
title(main=
"Uso
de
CPU
estressando
memoria",xlab="fator
de
stress",ylab="uso
de
CPU
(%)")
O
gráZico
indica
uma
relação
de
dependência
entre
memória
e
CPU.
Podemos
notar
que
o
uso
da
CPU
aumenta
de
acordo
com
o
aumento
da
utilização
da
memória,
porém
ao
utilizar
10
processos
temos
uma
queda
brusca
no
uso
da
CPU.
Uma
possível
explicação
é
que
o
SO
não
conseguiu
alocar
mais
memória
para
os
novos
processos,
portanto
eles
não
conseguiram
rodar
e,
por
consequência,
diminuíram
a
carga
na
CPU.
11
Trocas de contexto X stress de CPU
vmstatCPU1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU1.txt")
vmstatCPU2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU2.txt")
vmstatCPU5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU5.txt")
vmstatCPU10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU10.txt")
x<-‐c(mean(vmstatCPU1$V12),mean(vmstatCPU2$V12),mean(vmstatCPU5$V12),mean
(vmstatCPU10$V12))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatCPU1",
"vmstatCPU2",
"vmstatCPU5",
"vmstatCPU10"))
axis(2)
title(main=
"trocas
de
contexto
estressando
memoria",xlab="fator
de
stress",ylab="nro
de
trocas
de
contexto")
Podemos
perceber
pelo
gráZico
que
quanto
maior
o
número
de
processos
disparados
pelo
stress,
maior
o
número
de
trocas
de
contexto.
Isto
acontece
porque,
ao
se
criar
mais
processos,
o
SO
necessita
fazer
mais
trocas
de
contexto
para
permitir
que
todos
rodem
por
um
certo
tempo
12
Trocas de contexto X stress de IO
vmstatIO1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO1.txt")
vmstatIO2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO2.txt")
vmstatIO5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO5.txt")
vmstatIO10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO10.txt")
x<-‐c(mean(vmstatIO1$V12),mean(vmstatIO2$V12),mean(vmstatIO5$V12),mean
(vmstatIO10$V12))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatIO1",
"vmstatIO2",
"vmstatIO5",
"vmstatIO10"))
axis(2)
title(main=
"trocas
de
contexto
estressando
IO",xlab="fator
de
stress",ylab="nro
de
trocas
de
contexto")
O
gráZico
tem
um
comportamento
semelhante
ao
anterior,
e,
novamente,
a
explicação
se
deve
ao
fato
de
que
mais
processos
criados
afetam
a
troca
de
contexto.
13
Trocas de contexto o X stress de memória
vmstatMB1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB1.txt")
vmstatMB2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB2.txt")
vmstatMB5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB5.txt")
vmstatMB10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB10.txt")
x<-‐c(mean(vmstatMB1$V12),mean(vmstatMB2$V12),mean(vmstatMB5$V12),mean
(vmstatMB10$V12))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatMB1",
"vmstatMB2",
"vmstatMB5",
"vmstatMB10"))
axis(2)
title(main=
"trocas
de
contexto
estressando
memoria
",xlab="fator
de
stress",ylab="nro
de
trocas
de
contexto")
Este
caso
é
similar
aos
anteriores,
porém
entre
o
ponto
com
5
processos
e
o
ponto
com
10
processos
não
houve
variação.
Utilizando
da
explicação
anterior,
possivelmente
o
SO
não
conseguiu
alocar
mais
memória
para
os
novos
processos
e,
por
isso,
o
numero
de
trocas
de
contexto
manteve-‐se
constante.
14
Interrupções X stress de CPU
vmstatCPU1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU1.txt")
vmstatCPU2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU2.txt")
vmstatCPU5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU5.txt")
vmstatCPU10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatCPU10.txt")
x<-‐c(mean(vmstatCPU1$V11),mean(vmstatCPU2$V11),mean(vmstatCPU5$V11),mean
(vmstatCPU10$V11))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatCPU1",
"vmstatCPU2",
"vmstatCPU5",
"vmstatCPU10"))
axis(2)
title(main=
"interrupções
estressando
memoria",xlab="fator
de
stress",ylab="nro
de
interrupções")
Neste
gráZico
podemos
ver
que
o
número
de
interrupções
diminui
na
medida
que
o
número
de
processos
aumenta
até
serem
criados
cinco
processos.
Com
o
programa
stress
criando
dez
processos,
veriZicamos
que
há
a
necessidade
de
um
maior
número
de
interrupções.
Isso
provavelmente
acontece
porque
com
o
uso
de
até
cinco
processos
a
eZiciência
da
CPU
aumenta.
Já
quando
aumentamos
o
número
de
processos
para
dez,
a
eZiciência
de
cada
processo
diminui,
e
a
CPU
realiza
maior
número
de
trocas
de
contexto,
o
que
leva
a
um
maior
número
de
acessos
a
memória
e,
portanto,
um
maior
número
de
interrupções.
15
Interrupções X stress de IO
vmstatIO1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO1.txt")
vmstatIO2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO2.txt")
vmstatIO5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO5.txt")
vmstatIO10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatIO10.txt")
x<-‐c(mean(vmstatIO1$V11),mean(vmstatIO2$V11),mean(vmstatIO5$V11),mean
(vmstatIO10$V11))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatIO1",
"vmstatIO2",
"vmstatIO5",
"vmstatIO10"))
axis(2)
title(main=
"interrupções
estressando
IO",xlab="fator
de
stress",ylab="nro
de
interrupções")
O
gráZico
se
explica
porque
quanto
mais
utilizamos
a
memória,
maior
o
número
de
interrupções
necessárias
para
transferirmos
os
dados
para
o
disco
(observamos
que
a
diferença
da
média
das
interrupções
é
realmente
bastante
signiZicativa
neste
caso).
16
Interrupções X stress de memória
vmstatMB1<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB1.txt")
vmstatMB2<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB2.txt")
vmstatMB5<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB5.txt")
vmstatMB10<-‐read.table("/Users/VHG/Desktop/teste
Mac/vmstatMB10.txt")
x<-‐c(mean(vmstatMB1$V11),mean(vmstatMB2$V11),mean(vmstatMB5$V11),mean
(vmstatMB10$V11))
plot(x,axes=FALSE,ann=
FALSE)
lines(x)
axis(1,
at=1:4,
lab=c("vmstatMB1",
"vmstatMB2",
"vmstatMB5",
"vmstatMB10"))
axis(2)
title(main=
"interrupções
estressando
memoria
",xlab="fator
de
stress",ylab="nro
de
interrupções")
Observamos
neste
caso
que
o
número
de
interrupções
aumenta
com
o
número
de
processos,
isso
acontece
pois,
igualmente
ao
caso
acima,
ao
aumentarmos
o
Zluxo
a
ser
transferido
para
a
memória
principal,
maior
a
necessidade
realizarmos
interrupções
na
CPU,
para
que
este
volume
maior
de
dados
seja
transferido.
17
Graficos 3D
Para
os
gráZicos
3D
utilizamos
o
R
para
extrair
os
dados
estatísticos
como
a
media
e
para
plotarmos
utilizamos
o
GNUPlot.
Segue
o
código
de
extração
dos
dados
do
R.
Os
comandos
para
plotar
os
gráZicos
no
GNUPlot
e
o
respectivo
gráZico
para
cada
situação
seguem
logo
abaixo:
io0101<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0101")
io0102<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0102")
io0105<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0105")
io0110<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0110")
io0201<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0201")
io0202<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0202")
io0205<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0205")
io0210<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0210")
io0501<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0501")
io0502<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0502")
io0505<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0505")
io0510<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io0510")
io1001<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io1001")
io1002<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io1002")
io1005<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io1005")
io1010<-‐read.table("/Users/VHG/Desktop/resultadosCopy/io1010")
vm0101<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0101")
vm0102<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0102")
vm0105<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0105")
vm0110<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0110")
vm0201<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0201")
vm0202<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0202")
vm0205<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0205")
vm0210<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0210")
vm0501<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0501")
vm0502<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0502")
vm0505<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0505")
vm0510<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm0510")
vm1001<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm1001")
vm1002<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm1002")
vm1005<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm1005")
vm1010<-‐read.table("/Users/VHG/Desktop/resultadosCopy/vm1010")
18
Utilização de disco x stress de CPU x stress de IO
x<-‐c(mean(io0101$V4),mean(io0102$V4),mean(io0105$V4),mean(io0110$V4),mean
(io0201$V4),mean(io0202$V4),mean(io0205$V4),mean(io0210$V4),mean
(io0501$V4),mean(io0502$V4),mean(io0505$V4),mean(io0510$V4),mean
(io1001$V4),mean(io1002$V4),mean(io1005$V4),mean(io1010$V4))
Para
plotar:
splot
"/Users/VHG/Desktop/disco.txt"
using
1:2:3
with
linespoints
set
pm3d
set
title
"Uso
de
disco
X
stress
CPU
X
stress
IO"
set
xlabel
"stress
CPU"
set
ylabel
"stress
IO"
set
zlabel
"uso
disco"
19
Utilização de CPU x stress de CPU x stress de IO
x<-‐c(mean(io0101$V1),mean(io0102$V1),mean(io0105$V1),mean(io0110$V1),mean
(io0201$V1),mean(io0202$V1),mean(io0205$V1),mean(io0210$V1),mean
(io0501$V1),mean(io0502$V1),mean(io0505$V1),mean(io0510$V1),mean
(io1001$V1),mean(io1002$V1),mean(io1005$V1),mean(io1010$V1))
Para
plotar:
splot
"/Users/VHG/Desktop/cpu.txt"
using
1:2:3
with
linespoints
set
pm3d
set
title
"Uso
de
CPU
X
stress
CPU
X
stress
IO"
set
xlabel
"stress
CPU"
set
ylabel
"stress
IO"
set
zlabel
"uso
cpu"
20
Trocas de contexto x stress de CPU x stress de IO
x<-‐c(mean(vm0101$V12),mean(vm0102$V12),mean(vm0105$V12),mean
(vm0110$V12),mean(vm0201$V12),mean(vm0202$V12),mean(vm0205$V12),mean
(vm0210$V12),mean(vm0501$V12),mean(vm0502$V12),mean(vm0505$V12),mean
(vm0510$V12),mean(vm1001$V12),mean(vm1002$V12),mean(vm1005$V12),mean
(vm1010$V12))
Para
plotar:
splot
"/Users/VHG/Desktop/contexto.txt"
using
1:2:3
with
linespoints
set
pm3d
set
title
"Trocas
de
contexto
X
stress
CPU
X
stress
IO"
set
xlabel
"stress
CPU"
set
ylabel
"stress
IO"
set
zlabel
"trocas"
21
Interrupções x stress de CPU x stress de IO
x<-‐c(mean(vm0101$V11),mean(vm0102$V11),mean(vm0105$V11),mean
(vm0110$V11),mean(vm0201$V11),mean(vm0202$V11),mean(vm0205$V11),mean
(vm0210$V11),mean(vm0501$V11),mean(vm0502$V11),mean(vm0505$V11),mean
(vm0510$V11),mean(vm1001$V11),mean(vm1002$V11),mean(vm1005$V11),mean
(vm1010$V11))
Para plotar:
Aparentemente
existe
uma
relação
entre
as
trocas
de
contexto
e
o
número
de
interrupções
como
podemos
ver
pelos
gráZicos.
Isto
provavelmente
acontece
porque
para
haver
uma
troca
de
contexto
deve
ser
disparada
uma
interrupção
para
avisar
o
SO.
22
Apêndice
scripts
A-) tdesempenho.sh
#!/bin/sh
#
Shell
script
para
adicionar
uma
linha
com
conte√∫do
deZinido
#
pelo
usu√°rio
a
um
arquivo
qualquer
echo
Medidor
de
desempenho
inicializado
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall mpstat
23
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
24
#Executa
o
stress
sobre
a
E/S,
com
parametro
2.
echo
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐hdd
2-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
>>
stress.txt&
stress
-‐-‐hdd
2
-‐-‐timeout
10m
>>
stress.txt&
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
27
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
sleep 10m
killall
mpstat
killall
vmstat
killall
iostat
killall
stress
./Zixstats.sh
B-) cleaniostat.sh
#!/bin/sh
#Este
shell
script
limpa
os
arquivos
de
teste,
para
que
os
dados
possam
ser
analizados
pelo
probrama
de
estatitica.
28
echo
Voce
precisa
inserir
pelo
menos
um
argumento
para
o
script
cleanumbers!
exit
1
Zi
rm temp*
C-) cleanmpstat.sh
#!/bin/sh
#Este
shell
script
arruma
os
dados
obtidos
com
o
vmstat.
#Elimina
as
linhas
que
nao
contenham
os
dados
de
interesse.
grep
-‐wv
"Linux"
$1
>
temp1.txt
grep
-‐wv
"CPU"
temp1.txt
>
temp2.txt
D-) cleanvmstat.sh
#!/bin/sh
#Este
shell
script
arruma
os
dados
obtidos
com
o
vmstat.
#Elimina
as
linhas
que
nao
contenham
os
dados
de
interesse.
grep
-‐wv
"procs"
$1
>
temp1.txt
grep
-‐wv
"swpd"
temp1.txt
>
temp2.txt
E-)fixstats.sh
Referências
BibliográWicas
1-
Manuais
do
linux
oriundos
da
pagina
linux.die.net
links:
http://linux.die.net/man/8/vmstat
http://linux.die.net/man/1/iostat
http://linux.die.net/man/1/mpstat
link: http://www.r-‐project.org/
Link: R http://www.vivaolinux.com.br/
30