优秀网页翻译:同步你的时钟, Raspberry Pi 上更好的 PTP 设置
使用网络翻译工具如谷歌翻译,可实时翻译多语言文本 #生活知识# #科技生活# #网络知识#
同步你的时钟! Raspberry Pi 上更好的 PTP 设置 开篇如何绘制 PTP 指标?Python 代码gnuplot:结果: 把所有东西放在一起,然后……?解决方案 1:使用专用网络解决方案 2:使用不同的时钟伺服 其他似乎变化不大或不可能的想法内核动态滴答同步频率P2P 代替 E2E 参考原文链接:
https://medium.com/inatech/sync-your-clocks-better-ptp-settings-on-raspberry-pi-37a9a54e4802
开篇
Raspberry Pi 上的 PTP,它很容易安装,apt install linuxptp ,这样就完成了,对吧? 也许不吧。以下是一些比默认设置更好地运行它的提示。 本文是关于 inastitch 的系列文章的一部分。 在这个项目中,时钟同步对于帧捕获对齐至关重要。 12345
看呐!两个树莓派的心一起跳动。
这一切都始于这个 git repo 的补丁,以使 PTP 在 Raspberry Pi 3 上工作https://github.com/twteamware/raspberrypi-ptp。这些补丁现在集成在 RPi OS 的正式版本中。
页面 performance.md 是最有趣的。它比较了 RPi3(带有软件时间戳)和 NXP iMX7(带有硬件时间戳)之间的时钟同步质量。
(译者注:performance.md的翻译在此:performance.md)
结果:
RMS 偏移接近,但最小/最大偏移对于 RPi3 来说大一个数量级。这是软件时间戳的预期结果。
第一个问题:
我如何生成那些漂亮的小图?
如何绘制 PTP 指标?
从 journalctl -u ptp4l.service 中提取 ptp4l 日志,使用正则表达式和 python 处理日志行,并使用旧的 gnuplot 绘制数据。
Python 代码
# Parser script to plot PTP delay # Vincent Jordan # 2020.10.12# Run with: # journalctl -u ptp4l.service | grep "master offset" | python3 parse_ptp.pyimport re import fileinput import sysminKernelTime = 0; maxKernelTime = 1000;pattern = '^(.+)ptp4l\[[0-9]+\]: \[(.+)\] master offset\s+(-?[0-9]+) s([012]) freq\s+([+-]\d+) path delay\s+(-?\d+)$' test_string = 'Oct 20 11:44:18 raspberrypi ptp4l[353]: [27.058] master offset 1169073126895 s0 freq +0 path delay 267760'# Gnuplot data header print('# time, offset, freq, pathDelay')for line in fileinput.input(): # Regex search res = re.search(pattern, line)# if pattern was matched if res: # Capture result timeAndHost = res.group(1) kernelTime = res.group(2) masterOffset = res.group(3) state = res.group(4) freq = res.group(5) pathDelay = res.group(6) if (state == '2') and (float(kernelTime) > minKernelTime) and (float(kernelTime) < maxKernelTime): print(kernelTime, masterOffset, freq, pathDelay) # if issue in patter else: print("Regex error:", line) sys.exit()
12345678910111213141516171819202122232425gnuplot:
# Output in PNG image file set term png set output "output.png"set xtics font "Verdana,10" set ytics font "Verdana,6"# for multiple plot in one image set multiplot set size 1, 0.3set origin 0.0,0.6 plot 'ptp.dat' using 1:2 with lines title 'offset' lc 'black'set origin 0.0,0.3 plot 'ptp.dat' using 1:3 with lines title 'freq' lc 'black'set origin 0.0,0.0 plot 'ptp.dat' using 1:4 with lines title 'pathDelay' lc 'black' 123456789
结果:
上图:冷启动时的 PTP 时钟稳定(默认设置)
从冷启动开始同步时钟大约需要 1200 秒(20 分钟)
上图:PTP 稳定后运行 20 分钟
20 分钟后,时钟偏移在 ±80µs 之间相当稳定。
完美,因为我们需要不到 100µs 的偏移一遍 inastitch 能够工作。让我们连接一切……
把所有东西放在一起,然后……?
现在是时候连接拼接板,并开始流式传输了。
上图:在同一网络接口上流式传输视频时 PTP 第一次干扰
你能猜出拼接板是什么时候连接的吗?是的,在内核时间 3800。它造成了网络路径延迟的巨大不稳定性,导致大时钟偏移…
上图:与视频流共享链接时 PTP 不稳定
即使在流媒体开始很久之后,PTP 也会遭受看似周期性的延迟。这个不稳定的时钟不再适合画面缝合了。
解决方案 1:使用专用网络
使用专用网络交换机将使 PTP 不受干扰地运行。在更专业的设置中,PTP 流量将在具有高优先级的不同 VLAN 中运行,而不是冗余交换机,以最大限度地减少延迟。 AVB/TSN 网络特别支持内置的 PTP。
在专用网络上:
上图:冷启动的 PTP 时钟稳定(在专用网络上)
上图:PTP 在稳定后运行 20 分钟,同时在不同网络上流式传输视频
20 分钟后,时钟偏移与之前一样稳定在 ±80µs 之间。开始流式传输,在 PTP 同步中看不到差异……真棒!
上图:PTP 运行 2 小时,同时在不同网络上流式传输视频
运行 2 小时后,仍然可以看到尖峰。
解决方案 2:使用不同的时钟伺服
在较新版本的 ptp4l 中,clock_servo 有两个选项:
pi 是默认选项。它的准确性取决于 pi 常量(即,配置文件中以 pi_ 开头的所有选项)。 linreg 是一个较新的选项,它不回复硬编码的常量。 12
让我们试试 linreg 而不是 pi。
冷启动的 PTP 时钟稳定(在专用网络和 linreg 伺服上)
使用 linreg 可以更快地稳定 PTP,并且经过几个小时后,时钟看起来仍然更稳定,见下图:
上图:视频流时 PTP 运行数小时(linreg 伺服) 在不同的网络上
上图:inastitch 帧内延迟始终低于 5ms,持续 2 小时
其他似乎变化不大或不可能的想法
内核动态滴答
内核选项 nohz=off 告诉内核禁用动态滴答。动态滴答有助于内核让 CPU 更长时间处于睡眠状态。通过禁用此省电功能,预计系统时钟将具有更高的精度。
现代内核应该可以缓解这个问题,在现实生活中 nohz=off 和 nohz=on 之间几乎没有区别。
注意:以上所有测试都设置了 nohz=off。
同步频率
在配置文件 /etc/linuxptp/ptp4l.conf 中,有更改循环同步和延迟请求消息频率的选项:
logSyncInterval 是“同步消息之间的平均时间间隔。较短的间隔可能会提高本地时钟的准确性”(引用手册页) logMinDelayReqInterval 是“Delay_Req 消息之间允许的最小平均时间间隔。更短的间隔使 ptp4l 对路径延迟的变化做出更快的反应”(引用手册页) 12
这两个设置都指定为以秒为单位的 2 的幂。例如,0 是 2 次方零 = 1 秒。
对于低于 1 秒的间隔,负值似乎被接受,并且应该导致更新率高于 1 秒。
P2P 代替 E2E
在 /etc/linuxptp/ptp4l.conf 中,选项 delay_mechanism 可以更改为 P2P(Peer-to-Peer)而不是 E2E(End-to-End,默认)。
P2P 不能与旧式交换机一起使用。
这张幻灯片来自 NetTimeLogic 对 PTP 的精彩介绍,请参阅完整演示文稿的参考资料。
参考
NetTimeLogic 对 PTP 的介绍:
https://www.nettimelogic.com/resources/PTP%20Basics.pdf
关于 PTP 的 Fedora 项目文档:
https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/servers/Configuring_PTP_Using_ptp4l/
ptp4l 手册页:
https://manpages.debian.org/unstable/linuxptp/ptp4l.8.en.html
网址:优秀网页翻译:同步你的时钟, Raspberry Pi 上更好的 PTP 设置 https://www.yuejiaxmz.com/news/view/442081
相关内容
树莓派智能家居,如何在Raspberry Pi上设置Home Assistant在无线传感器网络中,如何利用卡尔曼滤波技术优化IEEE 1588精确时间同步协议(PTP),以提升同步精度并减少时钟漂移?
Pico 智能家居:家庭助理和 Raspberry Pi Pico 打造智能生活
翻页时钟app下载 翻页时钟(极简桌面时钟软件) v3.1.4 安卓版 下载
翻页时钟app下载 翻页时钟(全屏数字时钟桌面软件) v3.1.4 安卓版 下载
在便携式电子设备中,电荷泵如何优化DC/DC电压转换以提高效率?它与传统DC/DC变换器相比有哪些优势?
在物联网工程项目中,如何实现基于ZigBee协议的环境数据采集与传输?
翻页时钟app下载
flipclock翻页时钟软件
Flipclock翻页时钟