• Sonuç bulunamadı

BÖLÜM 3: YENĠ DEMOKRASĠ ALGISINA CHP’NĠN YAKLAġIMI

3.2. CHP‟nin ÇoğulculaĢan Demokrasiye YaklaĢımı

3.2.4. Anayasal Yapıda Süreklilik ve CHP

O módulo Cliente BitTorrent estabelece e gerencia as conexões entre o Cliente e os Peers. Cada conexão é gerenciada por um objeto C++ Thread, que é uma abstração de um subprocesso criado no instante da conexão. Cada objeto Thread possui as três máquinas de estado definidas na seção 2.3.3 para estabelecer e gerenciar o protocolo PeerWire entre o Cliente e o Peer. Os eventos que geram transições nas máquinas de estado do objeto Thread são: chegada de mensagem PeerWire, ação

dos módulos Choker e “Gerenciador de Conteúdo” do swarm correspondente e estouro dos temporizadores.

O modelo mais simples de processamento, utilizado por todos os simuladores que mencionaram o modelo de processamento, é quando as mensagens que chegam são somente atrasadas antes de serem processadas. Quando há somente um Peer conectado, este modelo pode ser representado pela Figura 20.

As mensagens chegam pela conexão com o Peer e esperam em uma fila para serem processadas. Porém, quando há mais de uma conexão, este modelo funciona como múltiplas filas com múltiplos processadores, conforme apresentado na Figura 21.

Como o atraso no processamento das mensagens é independente do número de conexões, o modelo funciona como se cada conexão possuísse um processador dedicado.

No EbitSim, por outro lado, as Threads compartilham o uso de um único processador, conforme apresentado pela Figura 22, modelando um sistema multiprogramado.

Figura 20 – Processamento de mensagens com atraso simples para uma conexao

Peer

Processador Filas de

mensagens

Figura 21 – Processamento de mensagens com atraso simples

Peer A Peer B Peer C Processadores Filas de mensagens Conexões

Observa-se na Figura 22 que os objetos Threads formam uma fila circular, onde cada objeto Thread possui uma fila de mensagens PeerWire. Neste modelo, o processador irá retirar uma mensagem do topo da fila de uma das Threads, processar esta mensagem e passar para o objeto Thread seguinte. Desta maneira, a cada volta na fila circular de objetos Thread, o processador irá processar uma mensagem de cada um dos objetos, e depois repetir o ciclo.

O tempo utilizado no atraso é gerado a partir de um histograma de tempos de processamento observados de um sistema real. Estes valores foram determinados medindo o tempo entre a chegada de uma mensagem e o envio de sua resposta em um sistema BitTorrent real.

5.3.1 Parâmetros

Os parâmetros que configuram o módulo “Cliente BitTorrent” são apresentados na Tabela 14. Os valores padrão são definidos pela especificação oficial.

Figura 22 – Esquema do processamento de mensagens pelo Cliente BitTorrent

Round Robin Peer A Peer B Peer C Processador Filas de mensagens Conexões

Tabela 14 – Parâmetros do módulo “Cliente BitTorrent”

Parâmetro Valor padrão

1 Histograma do tempo de processamento

2 Intervalo do cálculo da taxa de download 1 s 3 Intervalo do cálculo da taxa de upload 1 s

4 Intervalo entre Keep Alives 60 s

5 Tempo de timeout 120 s

6 Número de conexões ativas 4

O primeiro parâmetro possibilita a mudança do histograma utilizado para gerar os tempos de processamento. Este histograma pode ser criado a partir de ferramentas do OMNeT++. Os segundo e terceiro parâmetros definem o intervalo para o cálculo das taxas de download e upload, respectivamente, que são utilizadas na ordenação dos Peers pelo algoritmo de Choking, conforme explicado na seção 2.3.4. O quarto parâmetro define o intervalo do temporizador de Keep Alive. Este temporizador é reiniciado sempre que uma mensagem é enviada, e quando ocorre o seu estouro, uma mensagem de KeepAlive é enviada. Desta maneira, o Cliente não ficará mais do que o tempo do intervalo sem mandar uma mensagem para o Peer. O quinto parâmetro estabelece o máximo tempo sem receber mensagens do Peer que o Cliente irá tolerar. Se nenhuma mensagem chegar dentro deste tempo, a conexão é fechada. O sexto parâmetro define o número de conexões que o Cliente irá iniciar, enquanto o sétimo parâmetro define o máximo número de conexões que irá aceitar de outros Peers. Logo, a soma do sexto e sétimo parâmetro define o número máximo de conexões que o “Cliente BitTorrent” irá estabelecer.

5.3.2 Sinais emitidos

Os sinais emitidos pelo “Cliente BitTorrent” são apresentados abaixo.

• BitTorrentClient_NumUnconnected – Cada vez que o Cliente se conecta com um Peer, esse sinal é emitido com o número de Peers restantes para realizar futuras conexões.

• BitTorrentClient_NumConnected – Sinal emitido cada vez que ocorre uma conexão ou desconexão, indicando o número de conexões estabelecidas no momento da emissão do sinal.

Os sinais acima podem ser capturados para verificar como o número de conexões varia no Peer durante a simulação.

• BitTorrentClient_ProcessingTime – Emite o tempo de processamento de cada mensagem.

O sinal acima, quando capturado em um histograma, deve retornar o mesmo histograma utilizado para gerar os tempos de processamento.

• BitTorrentClient_PeerWireBytesSent – Emite o número total de bytes enviados com mensagens PeerWire.

• BitTorrentClient_PeerWireBytesReceived – O mesmo que o anterior, porém contabilizando as mensagens recebidas.

• BitTorrentClient_ContentBytesSent – Emite o número total de bytes de conteúdo enviados.

• BitTorrentClient_ContentBytesReceived – O mesmo que o anterior, porém contabilizando a recepção de conteúdo.

Os sinais acima computam a progressão do número de bytes enviados e recebidos pelo Peer, de acordo com o tipo de mensagem. Desta maneira, é possível calcular o overhead do protocolo PeerWire capturando o último valor emitido de cada sinal. • BitTorrentClient_*Sent – Há um sinal para cada mensagem PeerWire (a saber,

BitField, Cancel, Choke, Unchoke, Handshake, Have, Interested, NotInterested, KeepAlive, Piece, e Request) e indica o instante em que cada uma é enviada. • BitTorrentClient_*Received – O mesmo que o anterior, porém para a recepção de

mensagens PeerWire.

Esses sinais podem ser utilizados para contabilizar cada uma das mensagens do protocolo PeerWire enviadas ou recebidas por um Peer ou por todos os Peers do cenário, caso a captura seja efetuada no nível mais alto da hierarquia.