Universidade Federal do Rio de Janeiro Departamento de Ciência

Transcrição

Universidade Federal do Rio de Janeiro Departamento de Ciência
Universidade Federal do Rio de Janeiro
Departamento de Ciência da Computação
Disciplina: Avaliação e Desempenho
Professor: Paulo H. Aguiar
Aluna: Juliana Cavalcanti Correa
MANUAL DE USO DO SIMULADOR (TRABALHO AD 2009/2)
Preparação
Para executar o simulador, é necessário um sistema gnu/Linux com o compilador g++ instalado.
No prompt do linux, descompacte o arquivo simulador.tar.gz
tar – xzvf simulador.tar.gz
Dentro da pasta onde os arquivos foram descompactados, execute o makefile
make
Será gerado o arquivo executável Simulador.
Simulador
Programa para simular o tráfego de pacotes no ambiente proposto pelo trabalho de
simulação de 2009/1, em que pacotes de voz e de dados trafegam por filas de um roteador (ponto
crítico da comunicação) e precisam dividir a banda. É importante observar que é uma simulação
orientada a eventos, ou seja, o tempo corrente da simulação é discreto e transcorre através dos
eventos na lista. Dessa forma, a simulação de algumas horas de transmissão de pacotes pode ser
realizada em alguns segundos.
No ambiente proposto, são geradas várias chamadas de voz. Cada chamada de voz inicia em
um instante aleatório nos primeiros 30ms da simulação e gera pacotes de 300 Bytes (2.4Kb) em
intervalos fixos de 30ms, ocupando 80kbps de banda.
Simultaneamente, há fluxos de dados formando um tráfego de fundo. Cada um desses fluxos
inicia no instante 0 e gera pacotes de 1250 Bytes (10Kb) em intervalos exponenciais com média de
100ms, ocupando 100kbps de banda.
Há 3 filas no ambiente – WFQ, PQ e TX-Ring. Os pacotes gerados pelos fluxos de dados
são possivelmente alocados em uma das filas, de acordo com as regras expostas no enunciado. Cada
fila possui um buffer, e, quando o buffer correspondente está cheio, há uma perda do pacote. O
objetivo é determinar a perda média de pacotes de voz para diversos cenários propostos.
A dinâmica do ambiente, assim como o funcionamento da WFQ e da PQ estão explicadas
nos dois documentos pdf com o enunciado do trabalho.
A simulação foi criada no modo batch, ou seja, cada rodada usa como condição inicial o
estado deixado pela última rodada. A duração do transiente é determinada pelo próprio programa
em execução, sendo encerrado quando há uma estavbilização de 10% no tempo que os pacotes de
voz aguardam na fila, ou quando o transiente atingir o tamanho estipulado para uma rodada
(definido como parâmetro do programa).
O número de rodadas também é calculado em runtime. Ao final de cada rodada a partir da
trigésima (número mínimo de rodadas para garantir o percentual de T-Student usado no cálculo do
IC), é efetuado um cálculo do tamanho do IC. Quando esse tamanho estiver abaixo de 10% do
centro do IC, a simulação é encerrada. No entanto, a precisão pode ser regulada através do tamanho
da rodada, um número passado como parâmetro para o programa indicando quantos pacotes de voz
serão concluídos (enviados pelo roteador) a cada rodada.
Parâmetros
Dado esse ambiente, o simulador executa com parâmetros que variam algumas das
condições do ambiente. Todos esses comandos devem ser passados por linha de comando no
momento da execução do simulador, e uma lista rápida pode ser vista com o uso “Simulador -h”.
-n [numero] : Número de chamadas a serem geradas.
-f [numero] : Número de fluxos a serem gerados para compor o tráfego de fundo. Como cada fluxo
ocupa 100Kbps de banda, para obter, por exemplo, 2Mbps, basta gerar 20 fluxos.
-l [numero] : Largura de banda do roteador em bits por segundo. O valor padrão é 2 Mbps.
-t [numero]: Tamanho da rodada - número de pacotes de voz a serem concluídos (enviados pelo
roteador) para que a rodada termine. O valor padrão é 100000.
-b [numero]: Tamanho do buffer das filas WFQ e PQ em bytes. Há um buffer para cada fila. O
valor padrão é 10k.
-m [1,2,3]:
Alterna entre os 3 cenários propostos
1 – cenário com PQ
2 – cenário sem PQ, onde voz tem prioridade 5 e dados prioridade 0
3 – cenário sem PQ, onde voz e dados têm prioridade 0)
-r [numero]: Taxa de reposição dos tokens no balde da PQ, em milhares de tokens (bytes) por
segundo. Quanto maior for a taxa, maior será a banda dedicada exclusivamente à PQ. O valor
padrão é 100.
-v [1-5]:
Nível de verbose da saída.
0 = somente resultado final
1 = resultado discriminado por chamada
2 = exibe cada evento de chegada e partida de pacotes
3 = exibe cada evento com detalhes
4 e 5 = debug
Recomenda-se usar os níveis 0 ou 1, a não ser que se deseje verificar o funcionamento
interno do programa, visto que os níveis subsequentes geram muita informação na saída.
Cabe observar que nenhum desses parâmetros é obrigatório – todos têm um valor default
que é usado quando não estão presentes na linha de comando.
Um exemplo de uso completo do simulador seria:
./Simulador -n 16 -f 14 -l 2000000 -t 300000 -b 10000 -m 1 -r 100 -v 0
Saída
Dependendo do nível de verbose solicitado, a saída contém informações diferentes.
Ao final de cada rodada, independente da verbose, é gerado um sumário com as informações
sobre perdas, tempo e jitter para as chamadas de voz, e também de pacotes gerados, média de tempo
e perdas para chamadas de dados. Um exemplo a seguir:
(tempo corrente da simulação)
4347862.00 ms
Fim da Rodada 7
(duração da rodada em tempo de simulação)
Duracao: 621125.80 ms
Perda media das chamadas na rodada 7: 9.37%
Tempo medio gasto pelos pacotes de voz na rodada 7: 410.327
Jitter medio dos pacotes de voz na rodada 7: 29.521
Total de pacotes de dados gerados: 87215
Media de tempo entre chegadas de dados: 7.12 ms
Perda Media dos fluxos de dados: 40.18%
Também em qualquer nível de verbose, ao final da simulação, é informado o resultado
completo. A última linha é uma linha preparada para ser copiada e inserida em uma tabela com
vários cenários de simulação.
Final da Simulacao
Intervalos de confianca de 90%:
Perdas: 9.3099% - 9.3850% (centro: 9.3475, tamanho: 0.0751)
Tempo gasto pelos pacotes: 402.3022 - 403.7241 (centro: 403.0132, tamanho: 1.4218)
Jitter: 28.9380 - 29.2659 (centro: 29.1020, tamanho: 0.3279)
Tabela (Perda - Low, High, Avg; Tempo - Low, High, Avg; Jitter - Low, High, Avg)
9.3099, 9.3850, 9.3475, 402.3022, 403.7241, 403.0132, 28.9380, 29.2659, 29.1020
Quando são usados os níveis de verbose maiores, aparecem linhas detalhando eventos e
informações do ciclo de vida dos pacotes. Essas linhas informam o tempo em que ocorreu o evento
(tempo interno do simulador, não o tempo real), a estrutura onde foi gerada a informação (fluxo,
fila, servidor...), e detalham a qual fluxo pertence o pacote a que se refere.
1834.000
Main Partida do fluxo 9
TX Pacote de 11 saindo da TX para o servidor
TX Fluxo 24 adicionando na TX 2/2
1835.200
Main Partida do fluxo 11
TX Pacote de 16 saindo da TX para o servidor
TX Fluxo 29 adicionando na TX 2/2
1837.325
Main Chegada do fluxo 18
WFQ fluxo 18 adicionando na WFQ (10000/10000) no ciclo 491520000 com SN = 778240000
1837.921
Main Chegada do fluxo 13
PQ
fluxo 13 adicionando na PQ (300/10000) - balde -> 389
1838.839
Main Chegada do fluxo 23