Relatório em PDF: http://tinyurl.com/mf6agk
Apresentação de comparação de eficiência de chamadas de sistema de linguagens de programação utilizando uma plataforma de benchmarking escrita em DTrace feita para a disciplina de Sistemas Operacionais da Escola Politécnica da USP.
1. Monitoramento de System Calls
no OpenSolaris
PCS2042 – Sistemas Operacionais
Paulo Shindi Kuniyoshi
Pedro Victor Losada Cavalcante
Rafael Barbolo Lopes
Professor Jorge Kinoshita
3. DTrace
O que é:
Ferramenta de instrumentação dinâmica de sistemas
de produção
Quem desenvolveu:
Sun Microsystems
Plataformas:
OpenSolaris
Mac OS X
Linux
5. Metodologia
Ambiente:
Sistema Operacional: OpenSolaris 10
Máquina: VirtualBox 2.2.2
Documentação:
SUN Docs, Blogs
Scripts básicos:
Contagem de system calls chamadas
Exemplo de aplicação:
Benchmarking de processamento de texto
15. Exemplo 3
1) Abrir o gedit.
2) Rodar o Dtrace usando o script 1.
3) Digitar e salvar no Gedit.
4) Fechar o gedit.
16.
17. Script 2: Monitoramento Novo Processo
#!/usr/sbin/dtrace -s
syscall:::
/pid == $target/
{
@count_table[probefunc]=count();
}
18. Exemplo 4
Monitoramento de system calls a partir de uma linha
de comando.
# dtrace –s dtrace.c –c “[comando]”
Neste Exemplo 4 usamos:
[comando] = ls
22. Benchmarking com DTrace
“processo de comparação entre dois ou mais sistemas
programas de processamento de texto”
Algoritmo
Ler arquivos de texto e contar ocorrências do caractere
“a”
Ser o mais simples possível (não otimizado)
Metodologia
Utilizar diferentes linguagens de programação (C, Java,
Perl, Python e Ruby)
Aplicar o algoritmo a arquivos de 1KB a 400MB
23. Plataforma de Testes
Host (Windows XP):
Core 2 Duo – 2GHz
Memória principal: 2GB
Disco rígido: 120GB
Guest (OpenSolaris10 no VirtualBox):
Memória principal: 873MB
Disco rígido: 7,04GB
32. Tempo de Execução
Tempo de execução
500
450
400
350
Tempo (s)
300
C
250
Java
200
150 Perl
100 Python
50 Ruby
0
1KB 10KB 100KB 1MB 10MB 100MB 200MB 300MB 400MB
Tamanho do Arquivo
33. Tempo de Execução
Tempo de execução (sem java e ruby)
18
16
14
12
Tempo(s)
10
C
8 Perl
Python
6
4
2
0
1KB 10KB 100KB 1MB 10MB 100MB 200MB 300MB 400MB
Tamanho do Arquivo
35. Quantidade de Chamadas (entry
Chamadas de Sistema
Chamadas de Sistema
900000
800000
700000
600000
500000
C
400000 Java
300000 Perl
200000 Python
100000 Ruby
0
1KB 10KB 100KB 1MB 10MB 100MB 200MB 300MB 400MB
Tamanho do Arquivo
36. Quantidade de Chamadas (entr
Chamadas de Sistema
Chamadas de Sistema (sem java e rub
8000
7000
6000
5000
4000 C
3000 Perl
2000 Python
1000
0
1KB 10KB 100KB 1MB 10MB 100MB 200MB 300MB 400MB
Tamanho do Arquivo
37. Conclusão do Teste
...quanto mais System Calls,
maior o tempo de execução!
Alto desempenho para processar texto
C Perl Python