arsaraiva
(usa Ubuntu)
Enviado em 08/05/2017 - 16:03h
Olá Marcelo, repare em algumas linha do log (manipulei essas linhas para produzir um exemplo)
WALLTIME 0
DEBUG (13): BOOT_NO: No 13 boot no slot 0
DEBUG (13): No 13 no hops 255
WALLTIME 17323464
DEBUG (8): BOOT_NO: No 19 boot no slot 0
DEBUG (8): No 19 no hops 255
WALLTIME 40406986
DEBUG (9): BOOT_NO: No 9 boot no slot 0
DEBUG (9): No 9 no hops 255
WALLTIME 192827266753
DEBUG (8): SLOT_ATIVO: No 8 no slot [3] com tempo=19668.
DEBUG (8): ENVIAR_PKT_DADOS: destino 6 slot 1 [cont 3] no tempo=19668.
WALLTIME 196230790386
DEBUG (28): SLOT_ATIVO: No 28 no slot [0] com tempo=20042.
DEBUG (28): ENVIAR_PKT_DADOS: destino 0 slot 0 [cont 3] no tempo=20042.
WALLTIME 196230790486
DEBUG (20): TIME_TO_SEND [0]: tempo para enviar o pkt=20009.
WALLTIME 196231466075
DEBUG (20): SLOT_ATIVO: No 20 no slot [0] com tempo=20009.
DEBUG (20): SEND_BEACON: [numseq 149], slot 0 no tempo=20009.
WALLTIME 196231466175
DEBUG (0): SLOT_INATIVO: No 0 no slot [34] com tempo=20009.
WALLTIME 196266144222
DEBUG (6): SLOT_ATIVO: No 6 no slot [0] com tempo=20064.
DEBUG (6): ENVIAR_PKT_DADOS: destino 0 slot 0 [cont 3] no tempo=20064.
WALLTIME 196334795776
DEBUG (28): TIME_TO_SEND [1]: tempo para enviar o pkt=20053.
WALLTIME 196338212261
DEBUG (28): SLOT_ATIVO: No 28 no slot [1] com tempo=20053.
DEBUG (28): SEND_BEACON: [numseq 156], slot 1 no tempo=20053.
WALLTIME 196338212361
DEBUG (20): TIME_TO_SEND [1]: tempo para enviar o pkt=20020.
WALLTIME 196338887950
DEBUG (20): SLOT_ATIVO: No 20 no slot [1] com tempo=20020.
DEBUG (20): ENVIAR_PKT_DADOS: destino 0 slot 1 [cont 3] no tempo=20020.
WALLTIME 196338888050
DEBUG (0): TIME_TO_SEND [0]: tempo para enviar o pkt=20020.
WALLTIME 196348116024
DEBUG (0): SLOT_ATIVO: No 0 no slot [0] com tempo=20020.
DEBUG (0): SEND_BEACON: [numseq 151], slot 0 no tempo=20020.
WALLTIME 196365167299
DEBUG (0): SORVEDOURO: [trans 6] [origem 8] [slot 0] [cont 3] [time 20022].
Olhando no log, é possível perceber que o pacote com controle 3 [cont 3] foi originário do nó 8 (DEBUG (0): SORVEDOURO: [trans 6]
[origem 8] [slot 0] [cont 3] [time 20022]), passou pelo nó 6 ([trans 6]) até chegar no destino (sorvedouro).
Bem, o sorvedouro sempre será o destino final. Pensei em fazer um varredura no arquivo para localizar o DEBUG (0): SORVEDOURO (tem que ser sorvedouro, já que o DEBUG(0) faz outras coisas também) que não muda nunca e a partir dele, carregar 3 variáveis, origem que servirá para a próxima consulta, controle que serve para ver se o pacote é o mesmo da origem para o destino (pode acontecer do DEBUG (0) me retornar uma origem 8 mais o controle for 2, isso quer dizer que o pacote com controle 1 foi perdido) e tempo que servirá para calcular o tempo que demorou para este pacote chegar.
Uma vez carregadas as variáveis, varreria novamente o arquivo a procura do DEBUG (valor de origem que foi carregado, ex.: DEBUG (8): ENVIAR_PKT_DADOS:)(se for possível, varrer do DEBUG (0) para trás já que antes de receber, o pacote tem que ser enviado e também tem que ser ENVIAR_PKT_DADOS). Localizado a primeira ocorrência do DEBUG (8): ENVIAR..., iria carregar um variável controle2, faria a verificação se controle == controle2, se positivo, carrega o tempo2 e faz a operação tempo - tempo2 para retornar o tempo que este pacote demorou. Caso a verificação dos controles retorne falso (controle != controle2), continua a verificação até próxima ocorrência do DEBUG (8): ENVIAR...ou até chegar ao fim, que neste caso retorna "perdido".
Importante reparar que não me interesso pelos nó intermediários (DEBUG (6).
Outro detalhe é que são uns 2000 DEBUG (0): SORVEDOURO, então tenho que fazer essa verificação repetir n vezes (até o fim do arquivo)
Espero que tenha conseguido explicar. Obrigadão pela ajuda. Acredito que por script irá ficar mais rápida a consulta, pois o log tem aproximadamente 25000000 linhas.