omn*_*nom 9 networking linux time latency
我想测量 SNMP GET 请求的网络延迟。有一个免费的命令行工具time,可用于查找各种命令的计时统计信息。例如,它可以通过snmpget以下方式使用:
$ time snmpget -v 2c -c public 192.168.1.3 .1.3.6.1.2.1.2.2.1.10.2
IF-MIB::ifInOctets.2 = Counter32: 112857973
real 0m0.162s
user 0m0.069s
sys 0m0.005s
Run Code Online (Sandbox Code Playgroud)
根据手册,统计数据包括:
调用和终止之间经过的实时时间,
用户 CPU 时间(
times(2)
返回的结构 tms中的tms_utime 和 tms_cutime 值的总和
),
系统 CPU 时间(
times(2)
返回的结构 tms中的tms_stime 和 tms_cstime 值的总和
)。
如您所见,这些选项都不允许测量实际网络延迟时间(排除其他程序执行时间统计)。有什么办法吗?也许不是使用时间工具,而是一些内核黑客?
我想问一下,在我开始编写自己的程序之前。
谢谢,彼得
Fra*_*o R 11
尝试平:
$ ping -U 192.168.1.3
Run Code Online (Sandbox Code Playgroud)
从 ping 手册:
-U 打印完整的用户到用户延迟(旧行为)。通常 ping 会打印网络往返时间,由于 DNS 故障,该时间可能会有所不同。
该tcpdump(8)程序的-ttt标志可能正是您所需要的:
00:00:00.000031 IP haig.mdns > 224.0.0.251.mdns: 0 PTR (QM)? 1.0.168.192.in-addr.arpa. (42)
00:00:01.897031 IP haig.45240 > stackoverflow.com.www: Flags [F.], seq 866615166, ack 62506321, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
00:00:00.000030 IP haig.45242 > stackoverflow.com.www: Flags [F.], seq 853537650, ack 61102072, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
00:00:00.000019 IP haig.45243 > stackoverflow.com.www: Flags [F.], seq 863535366, ack 62086489, win 123, options [nop,nop,TS val 6026371 ecr 419296939], length 0
Run Code Online (Sandbox Code Playgroud)
行开头的时间戳显示自上一个数据包以来的时间(以微秒为单位)。通过-t在命令行上给出不同的数字,您可以获得绝对时间、自第一个数据包以来的相对时间或数据包之间的相对时间。
我刚刚展示了随机的 mdns 和网络流量,因为这很容易在我的系统上找到;您可以轻松过滤 SNMP 流量tcpdump(8)以仅获取您感兴趣的数据包。(这将是一个好主意,因为从繁忙的系统中转储所有流量会产生巨大的负载。)
| 归档时间: |
|
| 查看次数: |
45219 次 |
| 最近记录: |