美文网首页LinuxPTP
理解linuxptp的输出log

理解linuxptp的输出log

作者: SnC_ | 来源:发表于2022-01-13 17:02 被阅读0次

linuxptp中输出的打印主要由clock_stats_display完成。
该函数的执行频率为每2^(-logSyncItv)次同步执行一次,相当于1秒1次。

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);
  • offset_stats.rms为这一秒钟以来每次同步算出的clock_offset的root mean square(均方根,不仅能反映平均值,还能反映整组数据的离散程度)。单位为ns。
  • offset_stats.max_abs为这一秒以来绝对值最大的clock_offset。
  • freq_stats.mean为每次同步计算出的freq adjust合起来的平均值。单位为ppb。
  • freq_stats.stddev为freq adjust的standard deviation(标准差,反映一组数据的离散程度)
  • delay_stats.mean为算出的delay的平均值。单位为ns。
  • delay_stats.stddev为算出的delay的标准差。

Linuxptp中计算freq adjust默认使用的函数是pi_sample

它接收这几个参数:

  • struct servo *servo 用于维护上下文信息的结构体
  • int64_t offset 计算出的clock offset,单位是ns
  • uint64_t local_ts 即协议中的t2,单位是ns
  • double weight 一般为1,无特殊目的则无需关注
  • enum servo_state *state 函数的输出值之一,表示clock servo的state

其输出值的单位为ppb(parts per billion,即10^-9)。
比如,log中freq的值为 -50000,意思就是将slave的freq调整了-0.005%。

freq adjust主要的计算思路是(offset2 - offset1) / (local_ts2 - local_ts1)。

其他涉及到PID控制的部分就不多解释了,保持文章的简单易读。

相关文章

网友评论

    本文标题:理解linuxptp的输出log

    本文链接:https://www.haomeiwen.com/subject/uvtyaltx.html