Alibaba Cloud Linux3 eBPF程序使用LRU hash导致CPU利用率飙高问题处理

本文介绍了Alibaba Cloud Linux 3 系统上eBPF程序使用LRU hash最终cpu利用率飙高的原因及解决方案。

问题描述

Alibaba Cloud Linux3上,通过eBPF编写的程序如果利用LRU hash,在高频情况下可能会出现LRU maps持续打满,系统CPU利用率飙高。

image.png

问题原因

该问题源于Linux社区为修复hashtab deadlock问题而引入的一个内核补丁。此补丁存在缺陷,在LRU map更新操作失败时,未能正确释放相关内存。这种内存泄漏的持续累积会加剧锁竞争,最终导致CPU使用率飙升。

影响范围

内核版本大于等于 5.10.134-15.al8.x86_64,并使用LRU hasheBPF程序。可以通过以下代码判断内核版本及是否使用LRU hash。

uname -r                                   //判断内核版本。
示例:5.10.134-19.al8.x86_64
sudo bpftool map show [OPTION]             //检查输出结果中是否存在 type lru_hash 的map判断是否使用LRU hash。
示例:image.png

解决方案

安装内核热补丁。

yum install kernel-hotfix-22519882-<操作系统的子版本号>
示例:yum install kernel-hotfix-22519882-5.10.134-19