• TurboLinux11system»adjtimex简介


        Adjtimex介绍

        linux 系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时 钟是要读取RTC时间来进行时间同步(有些情况下,内核时钟也可以通过ntp服务器来读取时间) 这两个时钟通常会有一些误差,所以长时间可以导致这两个时钟偏离的比较多,最简单的保持两个时间同步的方法是用软件测出他们之间的误差率,然后用软件进行 修正。在每次重新启动系统的时候,系统都会用hwclock命令对时间进行同步。如果内核时钟在每一个时间中断都快或者慢的话,可以用adjtimex命 令进行调整,使得RTC和内核时间走的快慢一致。 adjtimex 允许用户来调整内核的时间参数,因此可以改变内核时间的速度,可以用hwclock命令来比较出内核时间和RTC时间的偏移率,然后利用adjtimex 命令根据偏移率来对内核时间进行校正,使得内核时间走的快些或者慢些,当经过调整的内核时间跟RTC时间走的同样快的时候,可以把这个命令行写到启动脚本 里面,让每次机器启动的时候都可以把内核的时间参数调整正确。

        Adjtimex安装

        首先请到下面网址下载:

        ftp://ftp.cse.cuhk.edu.hk/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/adjtimex-1.13-6.i386.rpm

        然后使用下面指令安装:

        # rpm –ivh adjtimex-1.13-6.i386.rpm

        Adjtimex命令使用说明

        语法: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

        Adjtimex应用

        查看当前内核时间变量的信息

        # adjtimex -p

         mode: 0

         offset: 0

         frequency: 573135

         maxerror: 16384000

         esterror: 16384000

         status: 65

        time_constant: 6

         precision: 1

         tolerance: 33554432

         tick: 10000

         raw time: 1189736934s 800946us = 1189736934.800946

        return value = 5

        比较系统时钟和CMOS时钟的误差

        # adjtimex --compare

         --- current --- -- suggested --

        cmos time system-cmos 2nd diff tick freq tick freq

        1191706436 -1969378.503326 -1969378.503326 10000 573135

        1191706446 -1969378.503351 -0.000026 10000 573135

        1191706456 -1969378.503359 -0.000007 10000 573135 10000 619952

        1191706466 -1969378.503403 -0.000045 10000 573135 10000 866825

        1191706476 -1969378.503406 -0.000003 10000 573135 10000 591825

        1191706486 -1969378.503454 -0.000048 10000 573135 10000 887140

        1191706496 -1969378.503449 0.000005 10000 573135 10000 540265

        1191706506 -1969378.503510 -0.000061 10000 573135 10000 973075

        2nd diff表示系统时间在10秒周期内快了还是慢了几秒种,如“-0.000026”在这里表示系统时间在10秒钟内慢了0.000026秒(注意,这里系 统会连续测试出好几个连续的差别,一般可以参考平均值)。 前面的tick/freq字段表示内核的tick和freq值,后面的tick/freq表示系统对tick和freq的推荐值,用这个值可以对系统时间 进行校正。针对上面的误差可以不需要校正,若需要修正可使用adjtimex –t或adjtimex –f指令进行修正。

        修正系统时间和CMOS时间之间的误差:

        # adjtimex –t 10002

        把系统10秒(10000微秒)的长度定义成实际时间的10002微秒,也就是说让系统时间走的快点,也可以说每系统时间走10秒(10000微秒)就快2微秒,从而系统时间跟上了RTC时间,达到了时间校正的目的。

  • 相关阅读:
    像素与豪米的转换
    C#中的事件和委托
    .Datagridview数据写入DataTable
    C# winform DataGridView 常见属性
    c# winform 用代码修改DataGridView列头的名字,设置列名,修改列名
    SVN常用命令
    (装载)C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
    C# WinForm dataGridView 技巧小结
    IPV4二进制显示
    Microsoft SQL Server 2005技术内幕:TSQL查询 PerformanceDB.sql
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/3656194.html
Copyright © 2020-2023  润新知