Benchmarking de latência de rede

0

Estou tentando medir a latência do envio de um pacote. Eu faço isso da seguinte maneira. O cliente envia tempo registrado. O servidor recebe o pacote e fornece a diferença entre a hora atual e a hora registrada no pacote. No pseudocódigo, isso é

Cliente

while(true)
  // sleep(1)
  packet.data = get_current_time()
  send_packet(packet)

Servidor

packet = receive_packet()
get_current_time() - packet.data

Se eu introduzir um sono no cliente antes de gravar o horário e enviá-lo, obtenho uma latência de cerca de 80 microssegundos para que um pacote seja enviado e recebido. No entanto, se eu remover esse sono para que o loop esteja constantemente enviando pacotes, recebo uma latência de cerca de 4 microssegundos. Por que uma diferença tão dramática no desempenho? Cache? Execução especulativa? O que está acontecendo aqui? Obrigado por ajudar!

    
por user9801231902 26.06.2016 / 20:29

0 respostas