我使用tcpdump来捕获UDP数据包,并分析UDP广播程序和我的服务器之间的网络延迟。为了计算延迟,我将UDP应用程序数据中报告的源主机时间戳与tcpdump本地“内核”时间戳进行比较。
这两个服务器时钟被同步到毫秒精度,延迟高达2或3毫秒是可以接受的。我的机器是一个双6核英特尔X5670 @2.93Ghz与10和联合禁用。
问题是,当数据频率上升时,我观察到2台主机之间的延迟超过10毫秒,尽管总是远远低于10 10带宽。我有5个tcpdump作业同时运行:
tcpdump -c 0 chrt -f 80 -q -i eth1 net 232.xxx.xxx.xxx and udp port 22456 -s 0 -w myfile在过去,我用两个线程编写了我自己的转储程序:一个高优先级的网络读取器线程和一个低优先级的磁盘写入器异步线程,但这次我真的很想使用标准的linux解决方案。
如何最大限度地减少tcpdump UDP读取延迟?
发布于 2012-01-28 19:34:15
我建议您尝试重命名tcpdump进程,并将跟踪转储到tmpfs文件系统上的一个文件中,还可以将-p选项添加到tcpdump中,以避免将接口置于混杂模式,这可能会减少寄生通信量。
mkdir /tmpfs
mount -t tmpfs -o size=128m none /tmpfs
nice -n -10 tcpdump ... -w /tmpfs/yourfilehttps://serverfault.com/questions/354581
复制相似问题