导读:SDC 是不会在系统日志中留下任何记录或跟踪的数据错误。SDC的来源包括数据路径依赖性,温度变化和年龄以及其他硅因素。由于这些数据错误是静默的,因此它们可以在工作负载中保持未被检测到,并在多个服务之间传播。
Facebook位于俄勒冈州普林维尔的数据中心之一。
图片来源:Meta
经过多年测试各种检测静默数据损坏(SDC)的方法,Meta概述了解决硬件问题的方法。
SDC 是不会在系统日志中留下任何记录或跟踪的数据错误。SDC的来源包括数据路径依赖性,温度变化和年龄以及其他硅因素。由于这些数据错误是静默的,因此它们可以在工作负载中保持未被检测到,并在多个服务之间传播。
数据错误可能会影响内存、存储、网络以及计算机 CPU,并导致数据丢失和损坏。
Meta工程师三年前开始测试,因为一旦组件已经进入其生产数据中心车队之一,他们就很难检测到SDC。
"我们[需要]新的检测方法,通过检测SDC并大规模缓解它们来保持应用程序运行状况和车队弹性,"Meta工程师Harish Dattatraya Dixit在一篇博客文章中说。
根据测试,Meta发现其检测SDC的首选方法是使用停产和纹波测试。
生产外测试是一种 SDC 检测方法,当计算机经历维护事件(如系统重新启动、内核升级和主机置备等)时,会发生这种情况。这种类型的测试搭载到这些事件上,以允许测试具有更长的运行时间,从而实现"更具侵入性的检测性质"。
同时,纹波测试通过在工作负载处于活动状态时运行静默错误检测来实现。这是通过对工作负载进行影子测试以及在队列和工作负载中间歇性地注入具有预期结果的位模式来完成的,Meta 发现这比生产外测试能够更快地进行 SDC 检测。
这种更快的测试类型在Meta的基础架构中"涟漪",允许测试时间比生产外测试运行时低1,000倍。
然而,元工程师观察到,纹波测试只能检测到70%的车队数据损坏,尽管它能够在15天内检测到它们。相比之下,停产测试需要六个月的时间才能检测到相同的损坏以及其他损坏。
在解释这些好处和权衡时,Dattatraya Dixit建议拥有大规模基础设施的组织应使用这两种方法来检测SDC。
"我们建议在大型机队中使用和部署两者,"Dattatraya Dixit说。
"虽然检测SDC对于大型基础设施来说是一个具有挑战性的问题,但多年的测试向我们表明,[停产]和纹波测试可以为尽快大规模检测SDC提供一种新颖的解决方案。
当Meta工程师使用这两种测试来检测SDC时,他们发现所有SDC最终都可以被检测到。Meta表示,70%的SDC来自15天后的涟漪测试,停产测试在六个月内赶上了剩余SDC的23%,而其余7%是通过其数据中心队列中的重复涟漪实例发现的。
为了进一步推动检测SDC的创新,Meta还宣布将向学术界提供五笔赠款,每笔价值约5万美元,用于在该研究领域创建研究提案。