[Rio-pm] Ajuda com Threads - tempo de abertura

João André Simioni jasimioni em gmail.com
Domingo Julho 11 10:31:27 PDT 2010


> Talvez seja melhor também inverter a ordem do for. Ao invés de testar
> um protocolo de cada vez e esperar, de repente testar cada um três
> vezes antes de passar pro próximo, mas to só especulando agora.

Alguns elementos têm filtro e só respondem por um determinado
protocolo - por isso que eu faço os três testes. No código final, a
cada teste, eu aumento o timeout - no primeiro teste o timeout é de
1s, no segundo 2s e no 3o 3s. Isso evita falsos positivos (alguns
links congestionados acabam causando um RTT de até 10 segundos).

> Não que você tenha afirmado isso, mas eu fiquei preocupado em mostrar
> que a inicialização de threads não é tão custosa assim.
>
> Tem uma lenda urbana mesmo entre os programadores C mais "antigos",
> que inicializar thread é lento. Isso vem da época que thread era
> implementada via fork, lá nos idos do kernel 2.4. A partir do 2.6, se
> não me engano, threads são implementadas como threads mesmo (!?).

Aí eu já não sei - eu só tava preocupado em otimizar esse código. A
discussão é a melhor forma de encontrar idéias e melhorias.

Obrigado pela força

>
> No fonte do Net::Ping, lá pela linha 413 tem:
> use constant ICMP_STRUCT      => "C2 n3 A"; # Structure of a minimal ICMP packet
>
> Já na linha 451 temos:
> $msg = pack(ICMP_STRUCT . $self->{"data_size"}, ICMP_ECHO, SUBCODE,
>              $checksum, $self->{"pid"}, $self->{"seq"}, $self->{"data"});
>
> O pid é armazenado como short (0 a 64k - 1). Eu não faço idéia se dá
> pra mexer nessa mensagem.
>
> Realmente parece um problema, mas aqui já to saindo da minha área denovo :)


Vou dar uma olhada com calma aqui depois - tenho que dar uma olhada
como o ICMP Echo é implementado para poder dizer se há alguma
melhoria. Se conseguir, eu posto aqui depois.

[]'s

João André


Mais detalhes sobre a lista de discussão Rio-pm