Análise de Disco, I/O e Processamento

1.905 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.905
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Análise de Disco, I/O e Processamento

  1. 1. Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de ComputaçãoBCC264 - Sistemas Operacionais Segundo Trabalho Prático Johnnatan Messias Pollyanna Gonçalves Wellington Dores Professor - Fabrício Benevenuto Ouro Preto 18 de abril de 2011
  2. 2. Sumário1 Introdução 1 1.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Análise das práticas propostas . . . . . . . . . . . . . . . . . . . . . . 1 1.2.1 Questão 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2.2 Questão 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.3 Questão 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Lista de Figuras 1 Exercício 1.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Exercício 1.2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Exercício 1.3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 Tabela 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5 Tabela 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Lista de Programas 1 Script em P ython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Código com chamada de script . . . . . . . . . . . . . . . . . . . . . . 6 3 Código em bash e awk . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 Script em P ython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2
  3. 3. 1 Introdução Este trabalho tem como objetivo analisar o uso da CPU alterando o número deprocessos simultâneos em andamento, utilizando de comandos Unix para tal.1.1 Considerações iniciais • Sistema Operacional: Ubuntu 10.10 • Processador Intel Core 2 Duo • Ambiente de desenvolvimento da documentação: TeXnicCenter 1 Editor de A LTEX.1.2 Análise das práticas propostas1.2.1 Questão 01 Neste exercício vamos utilizar o comando yes do Unix para vericar políticas deescalonamento do processador. 1. Execute o comando yes em um terminal e o comando top em outro. Observe a utilização de CPU do yes. Agora pare a execução do yes e execute yes /dev/null e observe a utilização de CPU do yes. Procure explicar o que foi observado. Resposta) Utilizando o primeiro comando enunciado podemos observar o uso da CPU em torno de 20%, já o segundo comando fez a utilização da CPU chegar a 100% (o uso da memória foi o mesmo nos dois casos). Ambos os processos iniciaram com nice 0.1. 1 2. Execute agora duas vezes mais comandos yes /dev/null do que o número de CPUs que você tem em seu computador. Observe a utilização de CPU com o comando top. O que acontece com a utilização de CPU? Explique o ocorrido. Resposta) Executando mais comandos yes do que a quantidade de núcleos existentes no processador o sistema operacional faz o uso de um escalonador de processos para que todos os comandos executados rodem como se houvessem CPUs disponíveis para cada processo. 2 3. Execute novamente duas vezes mais comandos yes /dev/null do que o número de CPUs de sua máquina. Porém utilize diferentes nices. Explique o que se observa sobre o escalonamento desses processos na CPU. Resposta) Utilizando o comando nice com diferentes prioridades concluimos que, quanto menor o valor passado para o nice, o processo passa a utilizar uma maior porção da CPU. 3 1
  4. 4. Abaixo as guras representando cada etapa dos comandos executados: Figura 1: Exercício 1.1) 2
  5. 5. Figura 2: Exercício 1.2) 3
  6. 6. Figura 3: Exercício 1.3)1.2.2 Questão 02 Neste exercício vamos construir um pequeno monitor de tempo de CPU. A uti-lização de CPU pode ser medida através da seguinte fórmula: U = (Bf − Bi)/T Onde Bf − Bi é o tempo em que a CPU cou ocupada durante um determinadointervalo de tempo T . 1. O comando top calcula a utilização de CPU de tempos em tempos. O intervalo de tempo padrão utilizado pelo top é 1 segundo. Este intervalo pode ser alterado. Digite mantop e procure entender qual o parâmetro que altera este intervalo. Altere o valor do intervalo para 10 segundos. Faça a mesma coisa 4
  7. 7. agora utilizando, ao invés do top, o comando vmstat. Indique a utilização de CPU na saída do vmstat ao executar vários comandos yes /dev/null simultaneamente na máquina. Resposta) No comando vmstat, com atualizações a cada 10 segundos(−n10), os parâmetros alterados são os da coluna U S (atualização da CPU) e o da coluna ID(tempo de ociosidade).2. No Linux, o /proc contém diversas informações sobre o sistema, incluindo in- formações sobre o tempo de CPU. Construa um código em Perl ou em Python que lê o tempo em que a CPU, ou seja o parâmetro B da equação acima. Infor- mações sobre o tempo de CPU podem ser encontradas no arquivo /proc/stat. Explique os campos que você utilizou para contabilizar o tempo de CPU. Para testar seu código faça o seguinte experimento. Deixe um yes /dev/null rodando em background na CPU queserá medida durante um período de 10 segundos e computecom seu script o tempo de CPU em dois momentos, antes e depois deexecutar o yes. A diferença desses tempos dividida por 10 segundos deve dar 100% de utilização. Resposta) O script criado, em P ython, está exibido abaixo: 1 if __name__ == __main__ : arq = open ( / proc / s t a t , r ) str = arq . r e a d l i n e ( )5 ) int int str = str . split ( col2 = ( str [3]) ; col4 = ( str [5]) tempo = (( col2 + col4 ) ∗ 0.01) print tempo Programa 1: Script em P ython 5
  8. 8. O código abaixo chama o script em P ython e calcula o tempo de CPU, de acordo com as colunas U S e ID que são retornadas no prompt de comando. 2 #! / bin / sh echo bash echo 5 e c h o tempo de cpu em s e g u n d o s : e c h o p y t h o n t e s t e 2 . py yes / dev / n u l l yes / dev / n u l l 10 sleep 10 echo python t e s t e 2 . py echo echo 15 k i l la l l yes Programa 2: Código com chamada de script3. Construa agora o mesmo código utilizando apenas bash, awk e sed. Os programas abaixo representam o código enunciado acima utilizando bash e awk 3 #! / bin / sh echo bash echo 5 echo tempo de cpu em s e g u n d o s : echo awk $1 == cpu { p r i n t f ( ( $3+$5 ) ∗ 0 . 0 1 ) } / proc / s t a t10 yes / dev / n u l l yes / dev / n u l l sleep 1015 echo awk $1 == cpu { p r i n t f ( ( $3+$5 ) ∗ 0 . 0 1 ) } / proc / s t a t20 echo echo k i l la l l yes Programa 3: Código em bash e awk 6
  9. 9. 1.2.3 Questão 03 Construa um script para medir utilização de disco a partir do /proc e planeje uma forma inteligente de testar. Explique as principais partes do arquivo do diretório /proc que foi utilizado para medir e os campos que você utilizou para medir a utilização de disco. Resposta) Utilizamos o comando diskstats, a partir de proc, para que o prompt imprima na tela informações da utilização do disco. O script, em P ython, abaixo 4 usa tais dados para calcular a diferença por tempo dos seguintes campos: • Campo 1: Número de leituras completas. • Campo 2: Número de leituras mescladas. • Campo 3: Número de setores lidos. • Campo 4: Tempo gasto, em milisegundos, para a leitura. • Campo 5: Número de escritas completas. • Campo 6: Número de gravações mescladas. • Campo 7: Número de setores escritos. • Campo 8: Tempo gasto, em milisegundos, para escrita. • Campo 9: Número de entradas e saídas em andamento. • Campo 10: Tempo gasto, em milisegundos, em entradas e saídas. • Campo 11: Média, em milisegundos, em entradas e saídas. import os def lerArq () : arq = open ( / proc / d i s k s t a t s , r ) 5 str = arq . r e a d l i n e ( ) ) while str = str . split ( ( str [11] != sda ) : str = arq . r e a d l i n e ( ) str = str . split ( )10 return str # − # 3 1415 − # 4 15 − # 7 18 8 − 19 if __name__ == __main__ :20 // l e i t u r a i n i c i a l dos parâmetros int str = lerArq () int wi = ( str [18]) ri = ( str [14]) 7
  10. 10. 25 float float twi = ( str [19]) tri = ( str [15]) // t e s t e de c ó p i a para um a r q u i v o q u a l q u e r p r i n t Copiando Arquivo 30 o s . s y s t e m ( cp f i l m e filmecopiado ) p r i n t Filme c o p i a d o com s u c e s s o // l e i t u r a f i n a l dos parâmetros int str = lerArq ()35 int wf = ( str [18]) float rf = ( str [14]) float twf = ( str [19]) trf = ( str [15])40 // c a l c u l o dos g a s t o s e n t r e l e i t u r a e e s c r i t a float ( ( wf − wi ) ∗ 5 1 2 ) float bytesWrite = bytesRead = ( ( r f −r i ) ∗ 512) tWrite = ( twf − twi ) ∗ 0.00145 tRead = ( trf − t r i ) ∗ 0.001 txWrite = 0; txRead = 0 if ( tWrite != 0) :50 txWrite = ( bytesWrite / tWrite ) if ( tRead != 0) : txRead = ( bytesRead / tRead )55 tTotal = ( tWrite + tRead ) print Bytes e s c r i t o s %f %b y t e s W r i t e print Bytes L i d o s %f %b y t e s R e a d print Taxa de t r a n s f e r e n c i a de e s c r i t a %f B/ s %t x W r i t e60 print Taxa de t r a n s f e r e n c i a de l e i t u r a %f B/ s %t x R e a d print Tempo t o t a l t o t a l %d %t T o t a l Programa 4: Script em P ython Note que utilizamos apenas alguns dos dados que é impresso após a execução da linha de comando enunciada acima. As tabelas abaixo nos mostra um teste de transferência de um arquivo de 687mb entre duas mídias, o resultado esperado na saída do script em P ython é o total calculado em cada coluna dessa tabela: 4 5 8
  11. 11. Figura 4: Tabela 1 Figura 5: Tabela 21.3 Referências Esclarecimentos e conhecimentos de alguns dos comandos aqui apresentadosforam retirados dos sites abaixo:Linux Questions: www.linuxquestions.orgViva o Linux: www.vivaolinux.com.br 9

×