Warum führt ein Flood-Ping an den lokalen Host zu niedrigeren RTTs?

Warum führt ein Flood-Ping an den lokalen Host zu niedrigeren RTTs?

Ich habe pingim Rahmen einer Machbarkeitsstudie eine Schätzung der Untergrenze für HTTP-Anforderungszeiten vorgenommen.

Um den Test zu beschleunigen, habe ich das Ping-Intervall verkürzt (um genügend Pings für einen vernünftigen Durchschnitt zu erhalten) und festgestellt, dass die RTT gegenüber dem lokalen Host sinkt, wenn das Intervall kürzer wird. Beispiel:

>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

(die Verwendung der tatsächlichen -fOption ergab ähnliche Ergebnisse wie -i 0.00).

Warum ergibt Flood ping4 us RTT, während Non-Flood 8 us ergibt? Wenn ich das -qFlag überspringe, wird es noch schlimmer, da Non-Flood bis zu 34 us erreicht. Warum dieser Unterschied beim Drucken einer Zeile für jeden einzelnen Ping?

Ich vermute, dass die ICMP-Pakete in eine Warteschlange gestellt werden und es eine Latenz gibt, bevor der Kernel die Warteschlange verarbeitet. Wenn mehr ICMP-Pakete vorhanden sind, kann es sein, dass er sie alle auf einmal verarbeiten kann.

Eine weitere Frage könnte sein, ob Ping-RTTs für den lokalen Host relevant sind. Möglicherweise wird bei einer HTTP-Anforderung an den lokalen Host kein TCP/IP verwendet.

Zur Info: Ich verwende Linux (#1 SMP Debian 3.2.68-1+deb7u2).

Antwort1

Ich habe keine Ahnung, welche Art von CPU Sie verwenden, bei mir -i 0.01ergibt sich eine RTT von 45µs gegenüber 8µs bei -f. Dieser Unterschied entspricht (bei meiner SandyBridge-CPU) ungefähr der Zeit, die zum Aufwachen aus dem C6-Energiesparmodus benötigt wird:

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

Und ja, das Drucken auf der Konsole kann je nach Terminalemulator (oder SSH usw.) ziemlich aufwändig sein.

verwandte Informationen