最近载一个项目中发现用netperf测试的网络延时波动较大,于是分析原因,同时也发现了netperf本身测量的问题。
发现netperf的结果
ELAPSED_TIME=60.03
MIN_LATENCY=2
MAX_LATENCY=20888
MEAN_LATENCY=399.72
P90_LATENCY=6
P99_LATENCY=11800
STDDEV_LATENCY=2084.31
THROUGHPUT=655.23
LOCAL_CPU_UTIL=1.13
REMOTE_CPU_UTIL=1.86
LOCAL_SD=1.132
REMOTE_SD=5.575
REQUEST_SIZE=-1
RESPONSE_SIZE=-1
ELAPSED_TIME=60.03
最小值极小,根据传输的数据包大小计算应该远远大于2us。分析了netperf代码,在send_omni_inner函数里有如下代码:
HIST_get_stats(time_hist,
&min_latency,

本文通过分析netperf的源代码,探讨了netperf测量的网络延迟波动较大的原因,发现netperf主要统计的是send调用的时间,而真正网络时间需要通过开启TCP时间戳并使用tcpdump和Wireshark进行分析。
最低0.47元/天 解锁文章
1643

被折叠的 条评论
为什么被折叠?



