您当前的位置:首页 >> 智慧城市
智慧城市

SysAK 应用摇动诊断篇—— eBPF又立功了! | 龙蜥技术

发布时间:2025-12-03

所面的取材和应用场面深入研究初步顺利进行了系统设计自动装弹机,此时龙道门停摆扫描机器大致原理也基本有了原型:

如果该系统赞同 perf 显卡谐波(HW)惨案,首先常用 eBPF 启动一个驱动程序在除此以外,除此以外生命期性消除停摆并在停摆处置数四组中都除此以外升级一个标志,然后 perf HW 惨案再生命期体检该标志应该按规定升级,以此来确实偏移停摆应该有按规定消除或者延迟发生的情形。

对于不赞同 perf HW 的该系统,我们无法来进行 perf HW 惨案了。退而求其次,我们都只通过 eBPF 必须启动驱动程序在除此以外,除此以外停摆数四组会体检本次除此以外停摆续期间隔时间与预期间隔时间应该有差异,以此来确实停摆应该有提前的情形。

四、系统设计借助于

仅仅要借助于右边的功能,必须应付如下几个问题:

1) eBPF 如何内置除此以外?

2) 如何把 perf 惨案启动时后我们的体检语义放于收到 perf 惨案程序在处置中都?

3) 如何根据该系统对于 perf 显卡谐波惨案的赞同与否让 eBPF 考虑不尽相同的体检功能?

1、eBPF 内置除此以外

在前所面所设计深入研究中都,我们发觉要常用 eBPF 启动驱动程序在除此以外来花钱一个停摆样本。不过很无意间,eBPF 在 Linux-5.15 以下的驱动程序在版本不赞同除此以外创始。幸好条条道路通那不勒斯,perf SW 惨案中都的 PERF_COUNT_SW_CPU_CLOCK 的惨案其在 Linux 驱动程序在的底层就是通过极低精度偏移借助于的。因此只要机智的来进行来进行了这个原理,然后结合 eBPF 就能借助于我们必须的 eBPF 除此以外。

2、eBPF prog 处置数四组龙道门联到 perf HW/SW 惨案 overflow 程序在数四组

虽然 perf 在其他用户自旋透过来 perf_event_open 该系统codice_和 ioctl 方法来创始 perf HW 和 perf SW 惨案谐波(如前所面 PERF_COUNT_SW_CPU_CLOCK 惨案,以及 perf 显卡惨案 PERF_COUNT_HW_CPU_CYCLES,通过 man perf_event_open 查看格外具体的反馈),但是传统的其他用户自旋 perf 常用中都并不必在这些惨案启动时后在驱动程序在去全面实施我们一切都是的 hack 动作,例如可执行我们必须后下展龙道门停摆扫描的程序在数四组,只很难在驱动程序在文档或者驱动程序在模块中都codice_ perf_event_create_kernel_counter 数四组特许我们必须的程序在数四组到 perf 惨案的 overflow_handler 上定下我们的目的。

然而这个财政困难随着 eBPF 的经常出现产生了变化。Perf event 为 ebpf 透过了专道门的 ioctl 出口处,以便为 ebpf 在驱动程序在中都施展它的超能力(别忘了 eBPF 文档本质上还是在驱动程序在可执行)。而 eBPF 与其他用户自旋又有着天然的"亲和力",这样其他用户自旋就可以非常简便的通过 ioctl 往 perf 惨案放于接自己的程序在处置语义。在文档层面上就是来进行:

ioctl(PERF_EVENT_IOC_SET_BPF)

来将 eBPF prog 处置数四组特许到 perf event 的 overflow_handler 程序在处置中都。

3、针对该系统应该赞同 perf HW 惨案考虑不尽相同的体检战略

通过 perf_event_open 该系统codice_的返回值确实该系统应该赞同 perf HW 惨案。

同时在 eBPF 中都定义两四组 prog,如果赞同 perf HW 则 attach HW 惨案扫描的 prog,否则 attach SW 惨案扫描的 prog。

五、直通系统所设计

本章主要对机器的借助于花钱一个具体的分解。下图是机器直通的一个直观原理图:

整个系统所设计如下:

1.首先后下展参数验证,包括电位、直通间隔时间、历史纪录纪录文件均须等等参数对验证。

2.后下展 eBPF 函数调用,这一步主要是加载 eBPF 程序在。

3.内置 eBPF 惨案。首先创始 perf event,接着将 ebpf prog attach 龙道门联到 perf event,最后创始一个poll event,并监听。于此同时 perf event 后下始工作,perf event 启动时后将codice_ eBPF prog 程序在直通。eBPF prog 程序在扫描到电位惨案后苏醒其他用户自旋到 poll 使命。

4.其他用户自旋 poll 被苏醒后将结果写到历史纪录文件。

六、机器常用

内置 SysAK 后,常用如下命令:

sysak irqoff [--help] [-t THRESH(ms)] [-f LOGFILE] [duration(s)]

-t:龙道门停摆的道门的单位,单位是 ms。

-f:均须 irqoff 结果纪录的文件。

duration:机器的直通延迟,如果不均须选项会短期直通。

通过驱动程序在模块创始 worker 来构造了一个短时龙道门停摆的场面,下面是通过 irqoff 比方说的结果展示。

TIME(irqoff) CPU COMM TID LAT(us)

2022-05-05_11:45:19 3 kworker/3:0 379531 1000539

owner_func

process_one_work

worker_thread

kthread

ret_from_fork

结果中都有若干部分四组成:

第一行是 log header。合共 5 列,从左到右依次是 间隔时间戳(模块反馈) 、龙道门停摆短的 CPU、龙道门停摆短的 current 内存 ID、总的龙道门停摆延迟。

第二行对应 log header 的具体反馈。

第三行及后面是比方说到龙道门停摆的在场磁盘反馈,简便后下展下一步对源码后下展深入研究。

原文页面:

本文为阿里云原创主旨,私自允许不得刊发。

贵州男科专科医院哪好
信阳哪的妇科医院好
湖北男科专科医院
成都风湿检查哪家医院好
安徽白癜风医院哪家最好

上一篇: 孩子礼物不会先以?先以Dacom G150守护童心,拥抱童趣

下一篇: haynes230合金是哪个标准化 haynes230板材哪里生产

友情链接