NVIDIA 助力 Facebook 新一代计时系统实现精确计时
2021-09-01 09:57
NVIDIA ConnectX 网卡助力社交网络关键任务的分布式应用实现精确计时功能。
Facebook 正在开放其开源计算项目 —— 时间设备项目(OCP TAP)的源代码,该项目以经济高效的方式提供高度精确的计时功能,以及跨数据中心时间同步功能。在 NVIDIA ConnectX-6 Dx 网卡(NIC)的支持下,这项解决方案中的 Time Card 通过精确计时协议,可以将几乎所有商用现成的(COTS)服务器变成精确的计时设备,与整个数据中心内的其他服务器共享精确计时。
Facebook Time Card 和 NVIDIA 网卡这对组合为数据中心运营商提供了一个先进和低成本的时间同步解决方案,并且该解决方案具有开源、安全、可靠和可扩展等特点。
精确的时间为什么对于数据中心至关重要
随着应用的扩展并且 IT 运营遍布全球,保持数据中心内不同服务器,或位于各大洲不同数据中心的数据同步,变得更加重要和困难。
分布式数据库必须追踪事件的确切顺序以保持一致性并显示因果关系。如果有两个人试图购买同一只股票,那么根据公平性(和合规性)原则,就必须知道买单的先后顺序。同样,当每小时有上千万人发布内容,数百万用户喜欢/称赞/喜爱这些帖子时,Facebook 必须知道每个帖子、每次点赞、每条回复或每个表情符号的实际发生顺序。
保持数据同步的方法之一是让每个数据中心在每件事务操作完成后向其他中心发送更新,但由于数据中心之间的延迟太高,以至于无法支持每小时数百万个事件,这种做法很快就变得无法维持。
更好的方法是让每个服务器和数据中心同步到精确的时间,使彼此之间的时间误差不超过一微秒。这样每个站点都能追踪时间,并且当它们与其他数据中心共享事件时,能够正确排序每个事件。
时间同步越精确,应用性能就越快。最近的一项测试表明,将计时精度提高 80 倍(将任何时间差异减小 80 倍)能够使分布式数据库的运行速度提高 3 倍。在相同的服务器硬件上仅仅通过提高更精确和更可靠的时间就能实现显著的性能提升。
网卡和网络在时间同步中的作用
OCP TAP 项目(以及 Facebook 关于开源时间设备的博客文章)确切地定义了 Time Card 如何接收和处理来自 GPS 卫星网络的时间信号,即使在卫星信号暂时不可用时,也能保持精确的时间并与时间服务器共享这一精确的时间。同时,网络以及所使用的网卡也发挥着至关重要的作用。
图1. OCP Time Card 保持精确的时间并与支持 PPS 输入/输出的网卡(如 NVIDIA ConnectX-6 Dx)共享这一时间(资料来源:Facebook 工程博客)
时间设备中的网卡必须有一个用于连接 Time Card 的每秒时间脉冲(PPS)端口。这能确保每个时间服务器中 Time Card 和网卡之间的精确时间同步(精确到几纳秒之内)。ConnectX-6 Dx 是首批支持此功能的现代 25/50/100/200Gb/s网卡之一。它还能过滤和检查传入的 PPS 信号,并使用其 ASIC 中的硬件在内部维护时间,从而确保精确性和一致性。
计时精度达到次微秒级的时间装置可以与数百个使用网络时间协议(NTP)的普通服务器或数万个使用精确时间协议(PTP)的服务器共享该计时。由于网络会增加时间信号的延迟,因此 NTP 和 PTP 通过为数据包添加时间戳来测量两个方向的传输时间、将抖动和延迟考虑在内并计算出每个服务器上的正确时间(PTP 的精度更高,因此它开始取代 NTP 协议)。
图2. NVIDIA ConnectX-6 Dx 带有 PPS 输入/输出端口,可与 Time Card 直接进行时间同步。它还可以在硬件中为数据包添加精确的硬件时间戳
另一种方法是使用软件解决方案来添加时间戳,但在由于拥堵或 CPU 的干扰,用软件添加时间戳的误差可能达到几毫秒,因此以今天的软件方案添加时间戳是过于难预测、不精确、甚至是不可行的。
相反,ConnectX-6 Dx 网卡和 BlueField-2 DPU 可以在高达 100Gb/s的速度下,在接收的数据包到达后和发送的数据包进入网络前,立即为它们添加硬件时间戳。ConnectX-6 Dx 可以为每一个数据包添加时间戳,即使在网络负载极大的情况下,时间戳的精度误差也小于 4 纳秒(4ns)。
其他大多数具有时间功能的网卡只对部分数据包进行标记并且精度抖动很大,因此在网络流量大的情况下,它们的时间精确性就会下降。
NVIDIA 网络解决方案为商用网卡提供最精确的延迟测量,从而在所有服务器上实现最精确的时间,应用层面的时间误差通常低于一微秒(<1us)。
网络计时精度的提升意味着每台服务器上的时间变得更加精确,这将为分布式应用带来更快的性能(并且为每个人带来更多的 Facebook “点赞数”)。
图3. 使用 OCP 时间服务器和 NVIDIA 的网卡或 DPU 部署 NTP 或 PTP 可以将高度精确的时间传到整个数据中心的所有服务器
精确时间同步,人人皆可受益
OCP 时间设备项目使任何组织都能获得精准的计时功能。来自 Facebook、NVIDIA 和 OCP 的开源时间服务器和开源管理工具提供了一个让每个人都可以像超大规模用户一样轻松使用这项功能的方法。
NVIDIA 所提供的精确时间功能网卡和 DPU(数据处理器)具有精确计时设备所需的超精确时间戳和网络同步功能。当使用 BlueField DPU 时,就可以在其 Arm 核上运行 PTP 栈,从而将时间栈与其他服务器软件隔离、持续验证该服务器内的时间精确性并持续计算整个数据中心的最大时间误差范围。
为了发挥经过优化的时间服务器和时间同步所带来的优势,云服务和数据库已经增加了基于时间的新命令和 API。这些解决方案一同开启了精确计时的新时代,提高了分布式应用的性能并为云和企业带来新型解决方案。
关于 OCP TAP 的技术规格、原理图、机械原理、物料清单和源代码等详细信息,欢迎访问:http://www.ocptap.com。