妥当性調査の一環として、ping
HTTP要求時間の下限を推定した。
テスト速度を上げるためにping間隔を下げ(合理的な平均を得るのに十分なpingを得るために)、間隔が短くなるとlocalhostの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
)。
洪水の場合、RTTが4usで、ping
洪水ではなく、RTTが8usであるのはなぜですか?フラグをスキップすると、-q
非洪水は最大34usまでになるため、状況がさらに悪化します。個々のpingごとに1行を印刷するのになぜそれほど違いがありますか?
私の考えでは、ICMPパケットがキューに入り、カーネルがキューを処理する前に遅延があり、さらに多くのICMPパケットがある場合は同時に処理できます。
その後の質問は、ping RTTがlocalhostに関連付けられているか、おそらくlocalhost HTTP要求を実行するときにTCP / IPが使用されないかどうかです。
ちなみに私はLinux(#1 SMP Debian 3.2.68-1 + deb7u2)を実行しています。
ベストアンサー1
どのタイプのCPUを使用しているのかわかりません。私の場合は-i 0.01
45μsのrttが出てきますが、-f
この違い(SandyBridge CPUの場合)はC6スリープ状態から目覚めるのにかかる時間とおおよそ一致します。
http://ena-hpc.org/2014/pdf/paper_06.pdf
はい、端末エミュレータ(またはSSHなど)によっては、コンソールに印刷するのに費用がかかる場合があります。