我正在使用点对点4l和PHC4系统将我的 Centos 7.4 服务器的时钟同步到中央 PTP 源的服务。这些服务定期写入系统日志记录,如下所示。我还没有找到任何文档来解释这里每个字段的含义以及单位是什么。我将不胜感激任何线索!
11 月 14 日 17:07:26 stg1 ptp4l:[718277.895] rms 74 最大 99 频率 +8760 +/- 84 延迟 535 +/- 0 11 月 14 日 17:07:27 stg1 phc2sys:[718278.105] phc 偏移 -62 s2 频率 +14460 延迟 2117
答案1
我从另一个链接得到以下解释:
这些值以纳秒为单位:
主偏移值表示测量到的与主偏移的偏移(以纳秒为单位)。
s0、s1、s2 指示灯显示时钟伺服的不同状态:s0 解锁、s1 时钟步长、s2 锁定。如果舵机处于锁定状态(s2),并且在配置文件中将 pi_offset_const 选项设置为负值(请参阅 man 8 ptp4l 了解更多信息),时钟将不会步进(仅缓慢调整)。
freq 值表示时钟的频率调整(以十亿分之一为单位,ppb)。
路径延迟值表示从主站发送的同步消息的估计延迟(以纳秒为单位)。
端口 0 是用于本地 PTP 管理的 Unix 域套接字。端口 1 是 eth0 接口。
INITIALIZING、LISTENING、UNCALIBRATED 和 SLAVE 是在 INITIALIZE、RS_SLAVE 和 MASTER_CLOCK_SELECTED 事件上更改的端口状态示例。当端口状态从 UNCALIBRATED 更改为 SLAVE 时,计算机已成功与 PTP 主时钟同步。
答案2
查看文件print.c
,我在“print”函数中发现了以下代码片段:
if (use_syslog) {
syslog(level, "[%ld.%03ld] %s%s%s",
ts.tv_sec, ts.tv_nsec / 1000000,
message_tag ? message_tag : "", message_tag ? " " : "",
buf);
}
print.h
使用此函数定义更多宏。有些似乎未使用,另一些则与示例中不存在的错误有关,但pr_info
在某个时刻以clock.c
可以解释这些日志的方式调用宏:
if (!stats_get_result(s->delay, &delay_stats)) {
pr_info("rms %4.0f max %4.0f "
"freq %+6.0f +/- %3.0f "
"delay %5.0f +/- %3.0f",
offset_stats.rms, offset_stats.max_abs,
freq_stats.mean, freq_stats.stddev,
delay_stats.mean, delay_stats.stddev);
} else {
pr_info("rms %4.0f max %4.0f "
"freq %+6.0f +/- %3.0f",
offset_stats.rms, offset_stats.max_abs,
freq_stats.mean, freq_stats.stddev);
}
我对 PTP4L 不太了解,但希望这些变量名称能为您指明正确的方向。如果你想进一步探索,这里是 github 存储库。