localhost에 대한 플러드 핑으로 인해 RTT가 낮아지는 이유는 무엇입니까?

localhost에 대한 플러드 핑으로 인해 RTT가 낮아지는 이유는 무엇입니까?

나는 ping타당성 조사의 일환으로 HTTP 요청 시간의 하한을 추정하곤 했습니다.

테스트 속도를 높이기 위해 핑 간격을 낮추었고(합리적인 평균을 얻기에 충분한 핑을 얻기 위해) 간격이 짧아지면 로컬 호스트에 대한 RTT가 떨어진다는 점을 지적했습니다. 예를 들어:

>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

(실제 -f옵션을 사용하면 와 비슷한 결과가 나타납니다 -i 0.00).

홍수가 ping4us RTT를 제공하는 반면 비홍수는 8us를 제공하는 이유는 무엇입니까? 플래그 를 건너뛰면 -q비홍수는 최대 34us에 도달하므로 상황은 더욱 악화됩니다. 각 개별 핑에 대해 한 줄을 인쇄할 때 왜 이러한 차이가 발생합니까?

내 생각에는 ICMP 패킷이 대기열에 들어가고 커널이 대기열을 처리하기 전에 대기 시간이 있으며 ICMP 패킷이 더 많으면 모두 동시에 처리할 수 있을 것입니다.

후속 질문은 ping RTT가 로컬 호스트와 관련이 있는지 여부, 로컬 호스트 HTTP 요청을 수행할 때 TCP/IP가 사용되지 않는 것일 수 있다는 것입니다.

참고로 저는 Linux(#1 SMP Debian 3.2.68-1+deb7u2)를 실행하고 있습니다.

답변1

나는 당신이 어떤 종류의 CPU를 사용하고 있는지 전혀 모릅니다. 제 생각에는 -i 0.0145μs rtt를 생성하는 반면 -f. 이 차이는 (내 SandyBridge CPU의 경우) C6 절전 상태에서 깨어나는 데 필요한 시간과 대략 일치합니다.

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

그리고 그렇습니다. 콘솔로 인쇄하는 것은 터미널 에뮬레이터(또는 SSH 등)에 따라 상당히 비쌀 수 있습니다.

관련 정보