1 环境
硬件环境:LS1046A arm64
系统环境:openEuler release 22.03 (LTS-SP1) + Linux kernel 4.19.26
2 问题说明
我的硬件平台需要适配一下 openEuler release 22.03 (LTS-SP1) 但是目前只能使用原来硬件平台的内核,在适配的过程中,发现 一个内核线程始终占用一个cpu资源。
3 问题排查
perf top 显示如下
频繁调用的几个函数,使用ftrace 都没有看到具体有用的调用栈。
perf record -F 99 -p 3006 -g -- sleep 60perf report -n --stdio
从linux内核代码里看是 rht_deferred_worker 在处理哈希表类似的工作,但是具体看不到是哪个
通过排除法,stop服务 或者 ps aux 后kill掉可疑程序发现 是firewalld.service造成的。
kill掉程序或者禁掉 firewalld.service 故障现象就消失了。
查看服务的状态如下:
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor>Active: active (running) since Wed 2024-06-19 09:15:58 CST; 1min 4s agoDocs: man:firewalld(1)Main PID: 4840 (firewalld)Tasks: 2 (limit: 101666)Memory: 38.6MCGroup: /system.slice/firewalld.service└─ 4840 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid6月 19 09:15:57 localhost systemd[1]: Starting firewalld - dynamic firewall dae>
6月 19 09:15:58 localhost systemd[1]: Started firewalld - dynamic firewall daem>
6月 19 09:16:00 localhost firewalld[4840]: ERROR: 'python-nftables' failed: internal:0:0-0: Error: Could not process rule: No such file or directoryinternal:0:0-0: Error: Could not process rule: No such file or directoryinternal:0:0-0: Error: Could not process rule: No such file or directoryinternal:0:0-0: Error: Could not process rule: No such file or directoryinternal:0:0-0: Error: Could not process rule: No such file or directoryinternal:0:0-0: Error: Could not process rule: No such file or directory
4 解决办法
修改
/etc/firewalld/firewalld.conf
将
FirewallBackend=nftables
改为
FirewallBackend=iptables