脸书开源一系列Linux核心组件与工具,用于数据中心和云计算
Facebook开源了一套Linux内核组件和相关工具,来解决关键队列管理(Fleet Management)问题,包括资源控制、资源利用、工作负载隔离、负载平衡、测量和监控等工具。
为确保用户可以快速可靠的存取服务,脸书基础设施工程师开发了流量最佳化系统,而BPF则在其中扮演重要的角色。BPF是Linux内核中一个高度灵活,且高性能的代码执行引擎,允许字节码在各种钩子点(Hook Point)执行,让定制化的代码也可以简单并安全的修改内核。虽然BPF已经广泛的应用在数据封包过滤上,但BPF的指令集具有通用性且足够灵活,可支持网络跟踪和安全性之外的应用。
使用BPF的最佳化系统Katran就是其中一种应用,Katran是软件定义的负载平衡解决方案,具有完全重新设计的转发平面(Forwarding Plane),充分利用了BPF虚拟机的优点。Katran转发平面软件函数库强化了Facebook基础设施,同时也帮助改进性能和网络负载平衡可扩展性,大幅减少低效率的发生。
Facebook还开源了Btrfs,这是新一代的文件系统,以当今的数据中心作为设计基础,支持写入时复制(Copy-on-write,COW)功能,能实现许多进阶功能,具有高容错、修复和易于管理的特性。Btrfs目的在解决和管理大型存储子系统,支持快照、在线数据重组、池化(Pooling)等。
Btrfs在Facebook数据中心应用程序效率和资源使用率上扮演重要角色,近期的使用案例是Cgroup2进行I/O控制的时候,Btrfs会帮忙消除由前一个文件系统的日志行为,引起的优先级倒置状况。Btrfs是目前唯一可用于资源隔离的文件系统实例,目前在Facebook的百万服务器都有部署,显著提升执行效率。
另外,Netconsd是一个基于UDP的Netconsole防护进程,为Linux Netconsole信息提供轻量级的传输服务。Netconsd可以接收并处理来自Linux核心的日志资料,并帮助产品工程师快速识别集群中的问题。在Facebook中,Netconsd提供重要的数据中心统计资料,该系统可以连续纪录数百万台主机的数据,并允许工程师从核心中产生大量的日志资料,以提取有意义的信息,协助产品工程师快速识别和诊断有状况的服务。
在7月的时候,Facebook开源了内部存储器不足解决方案Oomd,其中提到了两项关键的功用工具PSI(Pressure Stall Information)和Cgroup2,现在也都开源给外部使用。Cgroup2是用于分组以及结构工作负载的Linux核心机制,能够控制分配给每个群组的系统资源量,其具有存储器、I/O和CPU等控制器,允许使用者隔离工作负载,并确定每个工作负载分配的资源以及优先级。Cgroup2能良好处理存储器中,过量使用以及存储器稀缺的问题,改善了Facebook数据中心的多租户服务。
而PSI则提供一种规范方法,以三种主要资源指标量化资源短缺,分别是存储器、I/O和CPU,这些压力指标将作为此开源的一部分,能与其他核心和使用者空间工具结合使用。当在进行开发和反馈时,能智能地侦测资源短缺。PSI统计数据为即将发生的资源短缺提供早期预警,从而实现更积极主动,更细致的反馈。Facebook将PSI与Cgroup2结合使用,监控每个Cgroup各种工作负载的资源使用,进而在资源不足的情况下提高利用率和可靠性。
Facebook核心和核心应用程序开发人员,会与各内部团队合作,共同开发解决Facebook数据中心问题的技术,而这些问题也是其他行业都会遇到的,Facebook现在开源这些已经用于内部产品阶段的项目,供其他企业使用。而Facebook提到,开源解决方案是他们工程文化的一部分,这些解决方案解决了实际的产品问题,同时也解决了现代大规模云计算的挑战。