adjtimex使用

今天遇到一个ntp的同步问题。服务器上配置好了ntpd,在启动前也手动进行过同步,但是过段时间ntpq查询发现服务器即便能选出同步服务器,但是系统的时间偏差越来越大。
服务器上实际有2个时钟,一个是主板电池驱动的硬件时间(RTC或者CMOS时间),另外就是系统时间。服务器启动时会从RTC里读取一次时间,之后便靠中断来计时。可以设置ntpd同步后讲时间写回RTC.

语法:adjtimex [OPTION]… 主要参数说明:
-p, –print   输出内核时间变量的值
-t, –tick val    设置内核时钟计数间隔(微秒)
-f, –frequency newfreq   设置系统时钟偏移量
-c, –compare[=count]     比较系统时钟和CMOS时钟
-i, –interval tim    设置时钟比较间隔时间 (sec)
-l, –log[=file]  将当前时间记录到文件中
–host timeserver     查询时间服务器
-u, –utc     将CMOS时钟设置成UTC
在服务器上先比较一下系统时间和CMOS时间
# adjtimex --compare--- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1381503971     1.751318
1381503981     1.721794    -2952.4  10000  -1573016
1381503991     1.692179    -2961.5  10000  -1573016   10029   2456959
1381504001     1.662619    -2956.0  10000  -1573016   10029   2097584
1381504011     1.633055    -2956.4  10000  -1573016   10029   2122584
1381504021     1.603491    -2956.4  10000  -1573016   10029   2122584
1381504031     1.573928    -2956.3  10000  -1573016   10029   2117896
1381504041     1.544361    -2956.7  10000  -1573016   10029   2142896

然后使用

# adjtimex -t 10029

修改一下tick,重新手动同步后,再启动ntpd发现时间终于正常了。

毫秒

毫秒是一种较为微小的时间单位,是一秒的千分之一(0.001秒),简称ms。典型照相机的最短曝光时间为一毫秒。一只家蝇每三毫秒扇一次翅膀;蚊子二十毫秒振翅一次;蜜蜂则每五毫秒扇一次。由于月亮绕地球的轨道逐渐变宽,它绕一圈所需的时间每年长两毫秒。在计算机科学中,10毫秒的间隔称为一个jiffy。

微秒

微秒(microsecond)即百万分之一秒(10的负6次秒),简称μs。光在这个时间里可以传播300米,大约是3个足球场的长度,但是海平面上的声波只能传播1/3毫米。高速的商业频闪仪闪烁一次大约持续1微秒。一个BOMB在它的引信烧完之后大约24微秒开始爆炸。

纳秒

纳秒(nanosecond)即一秒的10亿分之一(10的负9次秒),简称ns。常用作内存读写速度的单位。光在真空中一纳秒仅传播30厘米(不足一个步长)。个人电脑的微处理器执行一道指令(如将两数相加)约需2至4纳秒。另一种罕见的亚原子粒子K介子的存在时间为12纳秒。

2. ppm

百万分之一秒,1个PPM增加

24*3600*(10^6+1)/10^6-24*3600=0.0864s。
PPM 增加500,每天的时差500*0.0864=43.2s

假设服务器现在标准的PPM为 A,为了让系统24小时慢1s。则ppm的调整为

A- 1*10^6/3600/24=A-11.574074。

3. freq

In struct timex, freq, ppsfreq, and stabil are ppm (parts permillion) with a 16-bit fractional part, which means that a value of 1in one of those fields actually means 2^-16 ppm, and 2^16=65536 is 1ppm.  This is the case for both input values (in the case of freq)and output values.-f newfreq, --frequency newfreqSet the system clock frequency offset to newfreq.  newfreq can be negative or positive, and gives a much finer adjustment than the --tick switch.  WhenUSER_HZ=100, the value is scaled such that newfreq = 65536 speeds up the system clock by about 1 ppm, or .0864 sec/day

因此freq增加65536相当于增加1个PPM(1E-6S)。freq增加65536,每天的影响0.0864s/天。
因为单个freq对时钟的影响非常小。所以大部分时候不用调整freq,除非是要求比较高的情况下,比如这个机器本身是做时钟服务器。

4. jiffies

全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。

系统运行时间以秒为单位,等于jiffies/Hz。

注意,jiffies类型为无符号长整型(unsigned long),其他任何类型存放它都不正确。

将以秒为单位的时间转化为jiffies:

seconds * Hz

将jiffies转化为以秒为单位的时间:

jiffies / Hz

相比之下,内核中将秒转换为jiffies用的多些

5. 工具介绍

1. adjtimex

可以根据和主板上的硬件时钟作对比,调整系统的每个tick代表的us数和freq,加-c参数会给出建议值。

ubuntu@ip-172-31-23-155:~$ sudo adjtimex -c--- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1484017467       0.491349             10000   1217447
1484017477       0.491537       18.8  10000   1217447
1484017487       0.491743       20.6  10000   1217447    9999   6421047
1484017497       0.491901       15.8  10000   1217447   10000    183072
1484017507       0.492101       20.0  10000   1217447    9999   6460109
1484017517       0.492283       18.2  10000   1217447    9999   6577297
1484017527       0.492490       20.7  10000   1217447    9999   6414797

ntptime

ubuntu@ip-172-31-23-155:~$ ntptime --help
ntptime: unknown option --
usage: ntptime [-MNT:cde:f:hm:o:rs:t:]-M          switch to microsecond mode
-N          switch to nanosecond mode
-T tai_offset   set TAI offset
-c          display the time taken to call ntp_gettime (us)
-e esterror     estimate of the error (us)
-f frequency    Frequency error (-500 .. 500) (ppm)
-h          display this help info
-m maxerror     max possible error (us)
-o offset       current offset (ms)
-r          print the unix and NTP time raw
-s status       Set the status bits
-t timeconstant log2 of PLL time constant (0 .. 6)

汇总

参数 增加单位数 1天影响
tick +1 +8.64s
ppm +1 +0.0864s
freq +1 +0.000001318359375s

简单的换算 1tick=100ppm=2^16*100 freq

转载于:https://www.cnblogs.com/muahao/p/6274930.html

adjtimex和时钟的几个概念tick,freq,ppm,jiffies相关推荐

  1. 扩频时钟(SSC)概念以及Lattice FPGA对扩频时钟的支持

    由于FCC.IEC等规定电子产品的EMI辐射不能超出一定的标准.因此电路设计者需要从多个角度来思考如何降低系统的EMI辐射,如进行合理的PCB布线.滤波.屏蔽等.由于信号的辐射主要是由于信号的能量过于 ...

  2. 20.时钟抖动(jitter)和时钟偏移(skew)的概念?

    jitter:由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是jitter,指的是时钟周期的变化.指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内 ...

  3. adjtimex使用

    adjtimex使用 今天遇到一个ntp的同步问题.服务器上配置好了ntpd,在启动前也手动进行过同步,但是过段时间ntpq查询发现服务器即便能选出同步服务器,但是系统的时间偏差越来越大. 服务器上实 ...

  4. adjtimex修改tick值用法举例

    测试 用户态下内核时钟计数间隔,默认都是100HZ.因此单个tick代表了10^4 us. 可以设置每个tick代表的时钟长度,因此把tick增加1(即增加为10001us)的影响是每天时间快8.64 ...

  5. linux4 tick值,详解在 linux 下的时间校对工具 adjtimex 的用法

    通常调整linux系统时间和RTC时间走的一致有很多方法,在存在时间服务 器的网络内,可以利用linux系统带的NTP服务来定时同步系统时间,这是个很简便 的方法,但当不具备这些条件的时候,利用系统内 ...

  6. STM32时钟系统的概念及意义

    STM32时钟系统的基本概念 概念及意义 概念 时钟系统是由振荡器(信号源).定时唤醒器.分频器等组成的电路.常用的信号源有晶体振荡器和RC振荡器 意义 时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下 ...

  7. 液晶接口系列——MIPI之DSI时钟的计算和常见概念区分

    文章目录 总述 时钟计算 液晶基础时钟概念 DSI时钟计算 DSI的"模式"概念区分 液晶屏的模式 COMMAND模式和VIDEO模式 VIDEO屏的三种模式 数据传输HS MOD ...

  8. linux时间同步解析,linux adjtimex详解时间偏差函数ntp同步与offset

    一.adjtimex函数命令是作什么用的 adjtimex是Linux内核系统自带的一个时间纠正函数,基本上linux的每个发行版本儿都自带这个函数,该函数主要是用来纠正和调整linux的系统时间. ...

  9. Linux内部的时钟处理机制全面剖析

    Linux内部的时钟处理机制全面剖析 在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等.所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操 ...

最新文章

  1. 天天向上 专访Data Domain创始人李凯
  2. protoc文件生成cs文件
  3. Jad一个好东西(转载)
  4. 【复习】---【noip2009 普及】细胞问题 (1)
  5. python import gc_Python 2.6 GC似乎可以清理对象,但不会释放内存
  6. PTA —— 基础编程题目集 —— 编程题 —— 7-3 逆序的三位数 (10 分)
  7. 判断按键值_ALIENTEK 阿波罗 STM32F767 开发板资料连载第七章 按键输入实验
  8. python queue 生产者 消费者_【python】-- 队列(Queue)、生产者消费者模型
  9. 05引用类型以及特殊引用类型string
  10. MyBatis 多表关联相同字段的解决方案
  11. rocketmq稳定可靠性测试
  12. RestTemplate 发送文件
  13. 小程序源码:独立后台带分销功能月老办事处交友盲盒
  14. 基于51单片机实现8位数码管显示表白数字(Proteus仿真)
  15. 2022年茶艺师(中级)复训题库及在线模拟考试
  16. php制作judge评测机,HelloJudge2-Judger
  17. /etc/login.defs配置文件详解
  18. 精神污染图制作(matlab代码)
  19. 【OHOS】常用命令整理
  20. java字符串组合_Java实现abc字符串排列组合

热门文章

  1. java视频接口_视频源常见接口介绍
  2. [转]setsockopt 设置socket
  3. modbus 协议中,操作数01(读线圈状态)对应的地址是怎么定义的?是位地址还是寄存器地址?
  4. 量化交易,你也可以赚大钱
  5. ABAP基础知识 内表汇总数据的方式
  6. 纵然放弃20万年薪也要自立门户
  7. Mellanox推出ConnectX-5系列100G InfiniBand和以太网适配器
  8. linux 基于 jiffy 的超时
  9. 信息爆炸时代,海量信息占据了你我大部分时间。与其这样,不如看看我推荐的几个公众号。...
  10. 想不想用另类的方式品尝心灵毒鸡汤,Python 5秒后到达战场