Return to solaris.html CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / html / hints |
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 -- > <jhawk@MIT.EDU> ! 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 <! -- <bmc@eng.sun.com> --> 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 <jones@chpc.utexas.edu>) ! 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 <denny@eng.sun.com> ! 142: </MENU> ! 143: <BODY> ! 144: </HTML>