Facebook发布免费Linux内核工具
扫描二维码
随时随地手机看文章
帮助那些管理大量的服务器释放代码,这些服务器是由一堆字母组成的。
多年来,Facebook让世界变得更加开放、更加紧密。这让每个人都很高兴最近,Facebook开始让世界变得更加紧密。在追求全局压缩的同时,数据业务部开发了一些难以拼写的Linux内核组件,以使开源操作系统更适合于大量的服务器。周二,Facebook将其内核工具套件作为开源提供,以帮助其他组织寻找更有效地管理大量Linux服务器的方法。Facebook工程师Tejun Heo和Thomas Connally在一篇博客文章中说:“这个版本中包含的内核组件和工具可以用来解决无数的生产问题。他们相信,这些服务和产品的集合将有助于任何开发人员构建应用程序,以在多个平台上为数百万用户服务。
首先是BPF, Linux内核中的代码执行引擎。这个名称曾经指的是Berkeley包过滤器,现在它包含了一组更广泛的函数。该软件允许字节码响应特定事件运行,以修改和扩展内核行为。从本质上说,它是一个能够进行C调用的通用指令集。虽然BPF是基于内核代理来在边界分离内核和用户空间之间过滤数据包,但它不仅仅是用于网络。例如,它可以用于跟踪和沙箱。Facebook将BPF虚拟机与其开源的Katran负载平衡软件一起用于网络流量优化。谷歌和Netflix也参与了BPF。然后是Btrfs,一个为数据中心设计的元音匮乏的文件系统,着眼于容错、文件修复和易于管理。显然,富士通、英特尔、甲骨文、SUSE和Red Hat等公司都对项目的发展做出了贡献。根据Heo和Connally的说法,Btrfs使Facebook的数据中心在各种应用程序中更加高效。他们说Btrfs帮助消除了以前的文件系统在使用cgroup2进行I/O控制时,日志记录行为导致的优先级倒置。注册用户询问Facebook是否可以提供任何指标来量化其代码如何改进。一名公司发言人拒绝承诺可以提高博客文章的效率。
这让我们想到了cgroup2,这是一个Linux内核工具,通过将工作负载划分为组并分配内存、IO和处理等资源来控制它们。Facebook使用该软件隔离和保护主系统工作负载,使其不受正在运行的二进制文件和其他系统服务的影响。它甚至进行了一个案例研究,以记录利用率的提高。
套件中的另一块代码区域叫做Netconsd。虽然它听起来像泻药,但实际上它是用来穿梭和构造Linux netconsole消息的代码,也就是日志数据。Heo和Connally说它持续记录来自数百万台主机的数据,并允许工程师从内核中产生的大量日志数据噪声中提取有意义的信号,帮助随叫随到的生产工程师快速识别和诊断不正常的服务。作为cgroup2的补充,PSI提供了一种测量内存、CPU和I/O的方法。这个工具的目的是允许组织在事情失控之前对资源短缺做出反应。最后是Oomd。不要和80年代的科技流行乐队OMD混淆,它是一个对内存不足(OOM)条件做出反应的过程刽子手。Oomd介入用户空间以防止Linux内核中的OOM条件。它支持自定义逻辑检测,可以针对不同的工作负载进行定制。