报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

Netflix 如何利用 eBPF 提高基础设施的可观测性

作者:Sergio De Simone

  • 2024-10-22
    北京
  • 本文字数:1300 字

    阅读完需:约 4 分钟

Netflix 如何利用 eBPF 提高基础设施的可观测性

为了有效且高效地调查多租户系统的性能,奈飞(Netflix)一直在尝试使用 eBPF 来对 Linux 内核进行检测,以收集有关进程如何调度并检测“吵闹的邻居”的持续且深入的见解。


使用 eBPF,奈飞(Netflix)的计算和性能工程团队旨在规避一些通常会使“吵闹的邻居”检测变得困难的问题。这些问题包括 perf 等分析工具所带来的开销,这也意味着它们通常仅在问题发生之后才部署,以及工程师所需的专业知识水平。根据奈飞(Netflix)工程师的说法,eBPF 可以实现对计算基础设施进行低性能影响的观测,从而实现对 Linux 调度程序的持续检测。


奈飞(Netflix)工程师确定的关键指标是进程延迟,该指标可指示“吵闹的邻居”可能造成的性能问题:


为了确保依赖于低延迟响应的工作负载的可靠性,我们检测了每个容器的运行队列延迟,该延迟测量了进程在调度到 CPU 之前在调度队列中所花费的时间。


为此,他们使用了三个 eBPF 钩子:sched_wakeupsched_wakeup_newsched_switch 。当进程从“睡眠”状态变为“可运行”状态时,即当它准备好运行并等待一些 CPU 时间时,会调用前两个钩子。当 CPU 被分配给其他进程时, sched_switch 钩子会被触发。因此,进程延迟是通过 CPU 分配给进程的时间戳减去进程首次准备好运行的时间戳来计算的。


最后,在 Go 程序中处理通过插装内核所收集到的事件,以向 Atlas(Netflix 的度量指标后端) 发送度量指标。为了将收集到的数据传递给用户空间的 Go 程序,奈飞(Netflix)工程师决定使用 eBPF 环形缓冲区,它提供了一种高效、高性能且用户友好的机制,不需要额外的内存复制或系统调用。


除了计时信息外,eBPF 还可以收集有关进程的其他信息,包括将进程与容器关联起来的进程的 cgroup  ID,这是正确诠释抢占的关键。事实上,检测“吵闹的邻居”不仅仅是测量延迟的问题,因为它还需要跟踪进程被抢占的频率以及是哪个进程导致的抢占,无论它们是否运行在同一个容器中。


例如,如果一个容器达到或超过其 cgroup  CPU 的限制,调度程序将对其进行限流,从而会导致由于队列延迟而引起的运行队列延迟明显增加。如果我们只考虑这个指标,我们可能会错误地将性能下降归因于“吵闹的邻居”,而实际上这是由于容器达到了它的 CPU 配额上限导致的。


为了确保他们的方法不会影响被监测系统的性能,奈飞(Netflix)的工程师还创建了一个用于测量 eBPF 代码开销的工具 bpftop。使用该工具,他们可以确定几类优化,以进一步减少它们最初的开销,并使每个 sched_* 钩子的时延保持在 600 纳秒的阈值之下。从而使其能合理地不断运行钩子,而不必担心它们会对系统性能造成影响。


如果你对这种系统性能监测方法感兴趣,或者想更好地了解 eBPF 的内部工作原理,原始文章所提供的细节要比这里所介绍的详细得多,其中还包含了有用的示例代码。

作者介绍

Sergio De Simone 作为一名软件工程师已经有超过 25 年的工作经验了,曾在一系列不同的项目和公司工作过,包括西门子、惠普和小型初创公司等不同的工作环境。在过去的十多年里,他一直专注于移动平台和相关技术的开发。他目前就职于 BigML, Inc.,负责 iOS 和 macOS 的开发。


查看原文链接:

https://www.infoq.com/news/2024/09/ebpf-noisy-neighbors/


2024-10-22 09:028395

评论

发布
暂无评论
发现更多内容

NotePad++使用批量替换修改文件格式

Geek_7ubdnf

notepad

CST均匀头模型和天线SAR比吸收率仿真案例

思茂信息

cst cst电磁仿真 CST软件

DeepSeek + 焱融存储:王炸组合重构企业 AI 核心竞争力

焱融科技

高性能存储 AI存储 DeepSeek 焱融存储

DeepSeek 正重构人形机器人和具身大模型赛道!

机器人头条

科技 大模型 人形机器人 具身智能 DeepSeek

tidb 4.0.13 VS 7.5.5,基准测试结果有点意外

TiDB 社区干货传送门

性能测评 7.x 实践

汽车之家 v5.1 到 v7.5 超详细 TiDB 版本升级实践,性能稳定性双提升!

TiDB 社区干货传送门

版本升级

windows查看端口占用情况

Geek_7ubdnf

端口

适合小型企业的库存管理工具推荐(含免费、开源)

NocoBase

开源 低代码 无代码 库存管理 小企业发展

关于 “DevOps 实践的深入剖析:从持续集成到持续交付” 相关内容的详细

Chihiro

#DevOps

英特尔至强6加持,以1台服务器抵7台性能

E科讯

【纯干货】手把手教你测试1688代采下单系统(附真实操作案例)

代码忍者

1688代采集运系统

DuckDB x TiDB -- 使用 DuckDB 唤醒 CSV 文件

TiDB 社区干货传送门

迁移

新架构 TiCDC 简介

TiDB 社区干货传送门

2025年福建企业采购堡垒机选哪家?需要重点考虑哪些因素?

行云管家

网络安全 堡垒机 福建

持续交付的优势有哪些

Chihiro

#DevOps

DevOps如何实现持续交付

Chihiro

#DevOps

QGIS 的性能优化

北京木奇移动技术有限公司

软件外包公司 GIS开发 QGIS开发

Squaretest自动生成单元测试

Geek_7ubdnf

squaretest

支付宝 IoT 设备入门宝典(上)设备管理篇

盐焗代码虾

支付宝 物联网 IoT 设备管理 应用分发

5次登上HackerNews首页,我们怎么做开源运营

小猿姐

开源 Kubernetes 云原生

面向 Data+AI 的新一代智能数仓平台

阿里云大数据AI技术

大数据 Serverless 数据仓库 SaaS MaxCompute

KeyShot 2024.3 for mac(3D渲染和动画制作软件) 中文版系统要求

Rose

如何在`created`生命周期钩子中使用`sessionStorage`实现缓存

Chihiro

缓存 Vue 3

QCon 是一个在软件开发领域具有广泛影响力的技术盛会,以下为你详细介绍:

Chihiro

Qcon

缺陷分析方法简介

天翼云开发者社区

测试发开 测试方法 缺陷分析

DuckDB x TiDB -- 将 MongoDB 数据导入 TiDB

TiDB 社区干货传送门

迁移

Plaid | 数据库切换历程:从 AWS Aurora MySQL 到 TiDB 的迁移之旅

TiDB 社区干货传送门

迁移

NLLB 与 ChatGPT 双向优化:探索翻译模型与语言模型在小语种应用的融合策略

vivo互联网技术

人工智能 大语言模型 LORA微调

53倍性能提升!TiDB 全局索引如何优化分区表查询?

TiDB 社区干货传送门

性能测评 新版本/特性解读 OLTP 场景实践

Netflix 如何利用 eBPF 提高基础设施的可观测性_软件工程_InfoQ精选文章