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