Annotation of embedaddon/ntp/html/hints/solaris.html, revision 1.1

1.1     ! misho       1: <HTML>
        !             2: <HEAD>
        !             3: <TITLE>Solaris hints and kinks</title><link href="scripts/style.css" type="text/css" rel="stylesheet">
        !             4: 
        !             5: </HEAD>
        !             6: <BODY>
        !             7: Information on compiling and executing ntpd under Solaris.
        !             8: <BR>
        !             9: Last Updated: Sun Jun 21 01:32:18 EDT 1998,
        !            10: John Hawkinson,
        !            11: <! -- This is deliberately not a mailto -- > &lt;jhawk@MIT.EDU&gt;
        !            12: <P>
        !            13: If you're not running Solaris 2.5.1 or later, it is likely
        !            14: that you will have problems; upgrading would be a really good plan.
        !            15: <P>
        !            16: <H3>All Solaris versions</H3>
        !            17: <P>
        !            18:       We have a report that says starting with Solaris 2.6 we should leave
        !            19:       <I>dosynctodr</I> alone.
        !            20:       <A HREF="solaris-dosynctodr.html">Here is the report</A>.
        !            21: <P>
        !            22: Proper operation of ntp under Solaris may require setting the kernel
        !            23: variable <I>dosynctodr</I> to zero (meaning "do not synchronize the clock
        !            24: to the hardware time-of-day clock").  This can be done with the
        !            25: tickadj utility:
        !            26: <BLOCKQUOTE><TT>
        !            27: tickadj -s
        !            28: </TT></BLOCKQUOTE>
        !            29: If you prefer, it can also be done with the native Solaris kernel debugger:
        !            30: <BLOCKQUOTE><TT>
        !            31: echo dosynctodr/W0 | adb -k -w /dev/ksyms /dev/mem
        !            32: </BLOCKQUOTE></TT>
        !            33: <P>
        !            34: Or, it can also be set by adding a line to /etc/system:
        !            35: <BLOCKQUOTE><TT>
        !            36: set dosynctodr = 0
        !            37: </BLOCKQUOTE></TT>
        !            38: <P>
        !            39: Instead of the <I>tick</I> kernel variable, which many operating
        !            40: systems use to control microseconds added to the system time every
        !            41: clock tick (c.f. <A HREF="../notes.html#frequency_tolerance">Dealing
        !            42: with Frequency Tolerance Violations</A>), Solaris has the variables
        !            43: <I>nsec_per_tick</I> and <I>usec_per_tick</I>.
        !            44: <P>
        !            45: <I>nsec_per_tick</I> and <I>usec_per_tick</I> control the number of
        !            46: nanoseconds and microseconds, respectively, added to the system clock
        !            47: each clock interrupt. Enterprising souls may set these based on
        !            48: information collected by ntpd in the <CODE>/etc/ntp.drift</CODE> file
        !            49: to correct for individual hardware variations.
        !            50: <P>
        !            51: On UltraSPARC systems, <I>nsec_per_tick</I> and <I>usec_per_tick</I>
        !            52: are ignored in favor of the <I>cpu_tick_freq</I> variable, which
        !            53: should be automatically be determined by the PROM in an accurate
        !            54: fashion.
        !            55: <P>
        !            56: In general, the same ntp binaries should not be used across multiple
        !            57: operating system releases. There is enough variation in the core operating
        !            58: system support for timekeeping that a rebuild of ntpd for the idiosyncracies
        !            59: of your specific operating system version is advisable.
        !            60: <P>
        !            61: It is recommended that ntp be started via a script like <A
        !            62: HREF="solaris.xtra.S99ntpd">this one</A>, installed in
        !            63: <CODE>/etc/init.d/ntpd</CODE> with a symbol link from
        !            64: <CODE>/etc/rc2.d/S99ntpd</CODE>.
        !            65: 
        !            66: <H3>Solaris 2.6</H3>
        !            67: <P>
        !            68: Solaris 2.6 adds support for kernel PLL timekeeping, but breaks this
        !            69: support in such a fashion that using it worse than not. This is <A
        !            70: HREF="solaris.xtra.4095849"> SUN Bug ID 4095849</A>, and it is not yet
        !            71: fixed as of June 1998.
        !            72: <P>
        !            73: <H3>Solaris 2.5 and 2.5.1</H3>
        !            74: <P>
        !            75: On UltraSPARC systems, calculation of <I>cpu_tick_freq</I> is broken
        !            76: such that values that are off by significant amounts may be used
        !            77: instead. This unfortunately means that ntpd may have severe problems
        !            78: keeping synchronization. This is <A HREF="solaris.xtra.4023118"> SUN Bug ID
        !            79: 4023118</A>. Bryan Cantrill <! -- &lt;bmc@eng.sun.com&gt; --> of Sun
        !            80: posted <A HREF="solaris.xtra.patchfreq">patchfreq</A>, a workaround script,
        !            81: to comp.protocols.time.ntp in March of 1997.
        !            82: <P>
        !            83: <HR>
        !            84: <H2>OLD DATA</H2>
        !            85: <STRONG>I can't vouch for the accuracy the information below this
        !            86: rule. It may be significantly dated or incorrect.</STRONG>
        !            87: <P>
        !            88: <P>
        !            89: <H3>Solaris 2.2</H3>
        !            90: <P>
        !            91: Solaris 2.2 and later contain completely re-written clock code to
        !            92: provide high resolution microsecond timers. A benefit of the
        !            93: re-written clock code is that adjtime does not round off its
        !            94: adjustments, so ntp does not have to compensate for this
        !            95: rounding. Under Solaris 2.2 and later, ntp #define's
        !            96: <CODE>ADJTIME_IS_ACCURATE</CODE>, and does not look for the <I>tickadj</I>
        !            97: kernel variable.
        !            98: <P>
        !            99: <H3>Solaris 2.1</H3>
        !           100: (This originally written by William L. Jones &lt;jones@chpc.utexas.edu&gt;)
        !           101: <P>
        !           102: Solaris 2.1 contains fairly traditional clock code, with <I>tick</I>
        !           103: and <I>tickadj</I>.
        !           104: <P>
        !           105: Since settimeofday under Solaris 2.1 only sets the seconds part of timeval
        !           106: care must be used in starting xntpd.  I suggest the following start
        !           107: up script:
        !           108: <BLOCKQUOTE><TT>
        !           109: tickadj -s -a 1000
        !           110: <BR>ntpdate -v server1 server2
        !           111: <BR>sleep 20
        !           112: <BR>ntpdate -v server1 server2
        !           113: <BR>sleep 20
        !           114: <BR>tickadj -a 200
        !           115: <BR>xntpd
        !           116: </TT></BLOCKQUOTE>
        !           117: 
        !           118: The first tickadj turns of the time of day clock and sets the tick
        !           119: adjust value to 1 millisecond.  This will insure that an adjtime value
        !           120: of at most 2 seconds will complete in 20 seconds.
        !           121: <P>
        !           122: The first ntpdate will set the time to within two seconds 
        !           123: using settimeofday or it will adjust time using adjtime.
        !           124: <P>
        !           125: The first sleep insures the adjtime has completed for the first ntpdate.
        !           126: <P>
        !           127: The second ntpdate will use adjtime to set the time of day since the
        !           128: clock should be within 2 seconds of the correct time.
        !           129: <P>
        !           130: The second tickadj set the tick adjust system value to 5 microseconds.
        !           131: <P>
        !           132: The second sleeps insure that adjtime will complete before starting 
        !           133: the next xntpd.
        !           134: <P>
        !           135: I tried running with a tickadj of 5 microseconds with out much success.
        !           136: 200 microseconds seems to work well.  
        !           137: <P>
        !           138: <HR>
        !           139: Prior versions of this file had major text contributed by:
        !           140: <MENU>
        !           141: <LI>Denny Gentry &lt;denny@eng.sun.com&gt;
        !           142: </MENU>
        !           143: <BODY>
        !           144: </HTML>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>