いつからか、CentOS 8のあるコアのCPU使用率が常時33%程度で張り付くようになっていました。
topコマンドで確認すると以下のようになっており、kworkerがずっと動いているようでした。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 280 root 20 0 0 0 0 D 32.5 0.0 1392:24 kworker/2:2+events 1017 mysql 20 0 6055096 1.0g 35932 S 6.0 13.4 131:42.13 mysqld
再起動しても直ることが無いため放置していましたが、対処法が分かったためメモしておきます。
※失敗すると起動しなくなる恐れがあるため、自己責任でお願いします
1. 原因と対処
以下URLで記載がありますが、i915ドライバのバグだそうです。https://bugs.centos.org/view.php?id=17482
対処方法として、このi915ドライバを使用しないようブラックリストに入れます。
ただし、i915はグラフィックドライバです。
私は、SSHでしかアクセスしないので問題はありませんが、GUIを使われる方はご注意ください。
2. 対処方法
CentOS 8 では、以下のようにすればブラックリスト化できるようです。
あまりよく分からずやっています。
# echo "blacklist i915" >> /etc/modprobe.d/local-blacklist.conf
# echo "install i915 /bin/false" >> /etc/modprobe.d/local-blacklist.conf
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak
# dracut --omit-drivers i915 -f
# grub2-editenv - list | grep kernelopts
kernelopts=root=UUID=********-****-****-****-************ ro crashkernel=auto resume=UUID=********-****-****-****-************ rhgb quiet
# grub2-editenv - set kernelopts="上記赤字部分をここに書く i915.blacklist=1 rd.driver.blacklist=i915"
# cp /boot/initramfs-$(uname -r)kdump.img /boot/initramfs-$(uname -r)kdump.img.$(date +%m-%d-%H%M%SS).bak
# sed -i '/^KDUMP_COMMANDLINE_APPEND=/s/"$/ rd.driver.blacklist=i915"/' /etc/sysconfig/kdump
# kdumpctl restart
# mkdumprd -f /boot/initramfs-$(uname -r)kdump.img
# reboot
3. 対処後
対処後にtopで確認すると、kworkerが上位に来なくなったことが分かります。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 993 mysql 20 0 6017248 791896 35700 S 7.3 10.1 0:15.21 mysqld 1882 nginx 20 0 405320 32296 19808 S 1.0 0.4 0:00.20 php
ZabbixでもCPU使用率が下がったことが確認できました。