vsntp/README.zh-cn
2021-02-06 08:59:23 +08:00

83 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

vsntp 读我说明
请参阅 INSTALL 档案,以取得安装执行的相关说明。
想知道 vsntp 的最新消息,下载最新版本,请参阅:
http://vsntp.sourceforge.net/
http://sourceforge.net/projects/vsntp
http://www.imacat.idv.tw/tech/vsntp.html
ftp://ftp.imacat.idv.tw/pub/vsntp/
作者的 PGP Public Key 可在下列网址下载:
http://www.imacat.idv.tw/me/pgpkey.txt
简介:
vsntp 是 SNTP 客户端服务程式,专为时间不正常的系统设计。 vsntp
的意思是 SNTP for Virtual PC ,原先是我为了在 Connectix Virtual PC
上跑 GNU/Linux 系统而写。 vsntp 依 RFC 1769 SNTP 标准,连线到 SNTP 伺
服器上的 UDP 埠 123 以校时。
若没有装 Virtual PC Additions Virtual PC 的时间很乱。 Virtual
PC 的 RTC Real Time Clock, 或称 CMOS 时钟、硬体时钟)是用软体模拟
出来的,往往根本没有在跑。 GNU/Linux 核心勉强维持一个大概的时间。正常
情况下,平均一分钟会快四秒,一天快一个半小时。这实在是太夸张了,用眼
睛都分辨得出时钟速度有问题。
David L. Mills 的 ntp 校时伺服器在此完全失灵。 ntp 先测出系统时间
速度偏移,用 adjtimex() 来调整系统时钟速度,用这个方法渐近式调整,系
统本身和相关应用程式比较不会出问题。这个方法有一个前提:时间速度本身
恒定不变。可是 Virtual PC 不讲这一套。 Virtual PC 的时间纯粹是软体模
拟出来的,受主电脑负荷与其它因素影响,时快时慢。没有固定的时间速度,
也就没有时间速度偏移值。怎么测都是枉然。
David L. Mills 的 ntp 程式里,附了一 sntp 客户端程式,可以放在
crontab 里定期对时,对时完结束程式。问题是, crontab 最小单位为分,
顶多一分钟跑一次,可是 Virtual PC 的时间一分钟慢四秒。一分钟退回四秒
,大多数应用程式都受不了。一分钟跑一次,对系统的负荷也很大。
vsntp 是为此而写的。它以 daemon 来执行,以免每次对时都对系统造成
严重负荷。它用 settimeofday() 来调整时间,校时频率可任意设定,尽可能
把系统时钟误差,维持在一秒以内。
vsntp 的做法有下列缺陷:频繁校时时,网路流量很大,频宽的负荷不小
,对对方 NTP 伺服器也会造成很大的负担。你最好自己在区网内,架一台自
己的 NTP 伺服器。同时因 settimeofday() 强制时间设定太频繁了,系统的
高精度计时功能会出问题。
  vsntp 用 sleep() 呼叫来定时校时。在某些系统上 sleep() 可能不大正
常。若 vsntp 校时一段时间后就不动了,系统上的 sleep() 呼叫不正常时,
可以改用 -a 选项换成 alarm() 计时器试看看。
  若碰到任何问题,请参阅你系统的上的 syslog 记录。 vsntp 把详细侦错
讯息,都以 LOG_DEBUG 层次, LOG_DAEMON 类别记录到 syslog 中。你可以在
/etc/syslog.conf 中加上这一行,写入侦错讯息:
daemon.debug /var/log/debug
并查阅 /var/log/debug 中的侦错讯息。记得在侦错结束后关闭。侦错讯息流
量很大,很快就会塞爆硬碟。就算没塞爆,大量资料写入硬碟,对系统效能的
影响也很大。
   vsntp 原是为 GNU/Linux 系统上执行而写。 vsntp 用的都是 POSIX 相
容的系统呼叫,在 POSIX 相容系统上应该都可以执行。不过目前为止我只有
Cygwin ,只在 Cygwin 上测试过。 Cygwin 上可以执行。若你可以成功在其它
系统上执行,请来信告知。若需要任何原始程式的修正,亦请一并附给我。我
知道因为 PID 档路径处理方式,所以无法在 MSWin32 上执行。
  vsntp 只在 GNU/Linux 系统上测试执行过。 vsntp 用的都是 POSIX 相容
的系统呼叫,在 POSIX 相容系统上应该都可以执行。不过我没有其它系统,无
从测试起。若你可以成功在其它系统上执行,请来信告知。若需要任何原始程式
的修正,亦请一并附给我。我知道因为 PID 档路径处理方式,所以无法在
MSWin32 上执行。但在 Cygwin 上说不定可以执行。
  若你可以在其它虚拟机器上执行 vsntp ,例如 VMWare ,请来信告知。
  基本上,若你在用 vsntp ,请一定要来信告诉我。我很想知道 vsntp 是
不是真的有人在用,对世界和平有帮助 *^_^* 或只是自己写好玩的而已。 :p
vsntp 是我写的第一个 daemon ,我写的第一个 socket 程式,也是我第
一个公开发行的 C 程式。请多多指教~ ^_*'