首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【eBPF 技术】能绑定 eBPF 程序在哪一些核上运行吗?

【eBPF 技术】能绑定 eBPF 程序在哪一些核上运行吗?

作者头像
Lokinli
发布2025-07-19 09:59:31
发布2025-07-19 09:59:31
1360
举报
文章被收录于专栏:以终为始以终为始

结论:

不能。你不能像固定(pin)一个普通用户态进程那样,直接在运行时为 eBPF 程序本身指定它必须运行在哪个 CPU 核心上。

eBPF 程序的执行 CPU 是由触发它的“事件”所在的 CPU 决定的。因此,你可以通过控制“事件源”的 CPU 亲和性来间接控制 eBPF 程序的执行位置。

为什么?

eBPF 程序不是一个像用户态进程或内核线程那样的独立、可调度的实体。它没有自己的执行上下文,不会被操作系统的调度器(Scheduler)管理。

eBPF 程序的本质是事件驱动(Event-driven)的。它被附加(attach)到内核中的特定挂载点(hook point),只有当相应的事件发生时,它才会在该事件的上下文中被动执行。

这个执行上下文在哪里,eBPF 程序就在哪个 CPU 上运行。

  • 对于 Kprobes / Tracepoints / Uprobes:当一个进程在 CPU-2 上运行时触发了一个系统调用(例如 execve),那么附加到 sys_enter_execve 这个 Tracepoint 上的 eBPF 程序就会在 CPU-2 上执行。
  • 对于网络(XDP / TC)当网卡的一个接收队列(RX queue)收到数据包并产生一个中断(IRQ),如果这个中断被 CPU-3 处理,那么附加到该网卡上的 XDP 程序或 TC ingress 程序就会在 CPU-3 上执行。
  • 对于 Perf Events:当 CPU-1 上的性能计数器溢出时,附加到该 perf
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结论:
  • 为什么?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档