¿Por qué el ping de inundación al host local genera RTT más bajos?

¿Por qué el ping de inundación al host local genera RTT más bajos?

Solía ping​​hacer una estimación del límite inferior de los tiempos de solicitud HTTP como parte de un estudio de viabilidad.

Para hacer la prueba más rápida, reduje el intervalo del ping (para obtener suficientes pings para obtener un promedio razonable) y noté que si el intervalo se acorta, el RTT contra el host local disminuye. Por ejemplo:

>sudo ping -i 0.01 -c500 -q localhost
PING localhost (127.0.0.1) 56(84) bytes of data.

--- localhost ping statistics ---
500 packets transmitted, 500 received, 0% packet loss, time 5986ms
rtt min/avg/max/mdev = 0.006/0.007/0.055/0.004 ms
>sudo ping -i 0.00 -c500 -q localhost
PING localhost (127.0.0.1) 56(84) bytes of data.

--- localhost ping statistics ---
500 packets transmitted, 500 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 0.003/0.004/0.016/0.000 ms, ipg/ewma 0.018/0.004 ms

(El uso de -fla opción real arrojó resultados similares a los de -i 0.00).

¿Por qué la inundación pingda 4us RTT mientras que la no inundación da 8us? Si me salto la -qbandera, se pone aún peor ya que el no-inundación llegará a 34us. ¿Por qué esta diferencia al imprimir una línea para cada ping individual?

Supongo que los paquetes ICMP se colocan en una cola y hay una latencia antes de que el núcleo procese la cola y si hay más paquetes ICMP, podría ser que pueda procesarlos todos de la misma manera.

Una pregunta de seguimiento podría ser que si los RTT de ping son relevantes para el host local, podría ser que TCP/IP no se esté utilizando al realizar una solicitud HTTP de host local.

Para que conste: estoy ejecutando Linux (#1 SMP Debian 3.2.68-1+deb7u2).

Respuesta1

No tengo idea de qué tipo de CPU estás usando, para mí -i 0.01produce 45 µs rtt, frente a 8 µs con -f. Esta diferencia es (para mi CPU SandyBridge) más o menos consistente con el tiempo necesario para reactivarse desde el estado de ahorro de energía C6:

http://ena-hpc.org/2014/pdf/paper_06.pdf

Y sí, imprimir en la consola puede resultar bastante caro, dependiendo de su emulador de terminal (o ssh, etc.).

información relacionada