在systemd NEWS文件中对systemd-timesyncd的声明很好地解释了该工具与Chrony和类似工具的区别。(强调我的):
添加了新的“ systemd-timesyncd”守护程序,用于在整个网络上同步系统时钟。它实现了SNTP客户端。与诸如chrony或NTP参考服务器之类的NTP实现相反,它仅实现客户端,而不会打扰整个NTP复杂性,仅关注从一台远程服务器查询时间并将本地时钟与其同步。除非您打算将NTP服务提供给联网的客户端或要连接到本地硬件时钟,否则此简单的NTP客户端应该比大多数安装更合适。[...]
对于服务器机群中的大多数主机,此设置是一个常见的用例。它们通常会从本地NTP服务器进行同步,而本地NTP服务器又会从多个源(可能包括硬件)进行同步。systemd-timesyncd尝试为该常见用例提供易于使用的解决方案。
尝试解决您的特定问题:
两者在准确性方面的真实世界有何不同?
我相信您可以通过从多个来源获取同步数据来获得更高的准确性,特别是systemd-timesyncd不支持使用案例。但是,当您使用它从连接到可靠内部网络的中央NTP服务器获取同步数据时,使用多个源实际上并没有太大关系,并且可以从单个源获得良好的准确性。
如果要从本地网络和同一数据中心中的受信任服务器同步服务器,则NTP和SNTP之间的精度差异实际上将不存在。NTP可以考虑RTT并进行时间规划,但是当您的RTT很小时(这对于快速的本地网络和附近的计算机而言)并不是那么有用。如果您可以信任所使用的资源,则也不需要多个资源。
效率有何不同?
从一个来源获得同步比从多个来源获得同步要简单得多,因为您不必决定哪个来源比其他来源更好,并且可以合并来自多个来源的信息。该算法更加简单,在这种情况下,所需的CPU负载也更少。
什么是“非简单”时间同步又需要作为NTP客户端的chronase用例?
上面的引用中已经解决了这个问题,但是无论如何,这些都是Chrony的用例,它们不在systemd-timesyncd范围内:
- 运行NTP服务器(以便其他主机可以将此主机用作同步源);
- 从多个来源获取NTP同步信息(这对于主机从Internet上的公共服务器获取该信息很重要);和
- 从本地时钟获取同步信息,该时钟通常涉及专门的硬件,例如GPS设备,可以从卫星获取准确的时间信息。
这些用例需要Chrony或ntpd或类似的东西。