用于分析操作系统 + NIC TCP 延迟的 Linux 命令行工具

用于分析操作系统 + NIC TCP 延迟的 Linux 命令行工具

我希望找到一个现有的 Linux 工具来测量延迟:

我正在尝试诊断我的操作系统和网卡给 Linux 中的 TCP 延迟增加了多少延迟。我查看了以下工具,但所有工具(至少在表面上)都测量带宽(Mbps/秒)而不是延迟(传输 1 个大小为 x 的数据包所需的纳秒数)。

nttcp nuttcp netperf iperf

如果我要编写自定义测试,它可能会执行以下操作:

客户:

  1. 创建指定长度的虚假消息,并为递增标识符添加一些填充。打开 TCP 连接(使用正确的
    参数,如 TCP_NODELAY 等)
  2. 循环并发送包含递增标识符的消息。存储与标识符关联的当前系统时间(以纳秒为单位)。
  3. 监听响应,记录当前时间并异步记录该标识符的延迟

服务器

  1. 监听连接
  2. 回显收到的任何消息

假设两个盒子具有相同的设置(配置、卡、操作系统、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

查看内核性能工具 (tools/perf)。它至少可以为您提供一些数据在网卡部分

还有LTTng 套件带有一些网络和系统调用跟踪支持。在软件方面,您需要的是进入 sys_write() 和在 start_xmit() 调用链末尾退出函数之间的时间,因此您可能需要插入自己的追踪点

答案4

刚刚发现几乎完全是我在寻找的东西(减去我可以用嗅探器交叉引用的排序,但没关系):http://linux.die.net/man/1/netpipe

相关内容