我希望找到一个现有的 Linux 工具来测量延迟:
我正在尝试诊断我的操作系统和网卡给 Linux 中的 TCP 延迟增加了多少延迟。我查看了以下工具,但所有工具(至少在表面上)都测量带宽(Mbps/秒)而不是延迟(传输 1 个大小为 x 的数据包所需的纳秒数)。
nttcp nuttcp netperf iperf
如果我要编写自定义测试,它可能会执行以下操作:
客户:
- 创建指定长度的虚假消息,并为递增标识符添加一些填充。打开 TCP 连接(使用正确的
参数,如 TCP_NODELAY 等) - 循环并发送包含递增标识符的消息。存储与标识符关联的当前系统时间(以纳秒为单位)。
- 监听响应,记录当前时间并异步记录该标识符的延迟
服务器
- 监听连接
- 回显收到的任何消息
假设两个盒子具有相同的设置(配置、卡、操作系统、CPU 等),在网络中彼此相对较近,并且大致知道网络的延迟贡献,则可以粗略估计操作系统 + NIC 贡献并开始测试各种配置。
还可以通过使用网络嗅探器监听两个主机之间的线路,计算双方之间某个 ID 的延迟,然后从内部测量的延迟中减去该延迟,从而更准确地了解延迟。
那么,有人知道用于测试这类东西的工具甚至样板代码吗?
答案1
有一个名为的工具qperf
可以为您提供此类统计数据。不过,它与 OFED/RDMA 包绑定。
# qperf -v xx.xx.xx.xx tcp_lat udp_lat
tcp_lat:
latency = 29.2 us
msg_rate = 34.2 K/sec
loc_cpus_used = 41 % cpus
rem_cpus_used = 11.5 % cpus
udp_lat:
latency = 24.8 us
msg_rate = 40.4 K/sec
loc_cpus_used = 34 % cpus
rem_cpus_used = 4 % cpus
答案2
您是否正在搜索 ping?
答案3
答案4
刚刚发现几乎完全是我在寻找的东西(减去我可以用嗅探器交叉引用的排序,但没关系):http://linux.die.net/man/1/netpipe