在使用 QTJ1处理器 + AMD专用内存条 的环境下可谓是处处遇坑, 其中就有遇到 Shutting down CPUs with NMI 的内核崩溃情况.

更改启动参数 🔗︎

编辑 vi /etc/default/grub,

1
2
# 为 `GRUB_CMDLINE_LINUX` 增加 `intel_pstate=disable intel_idle.max_cstate=0 processor.max_cstate=1 idle=poll` 几个参数
GRUB_CMDLINE_LINUX=" intel_pstate=disable intel_idle.max_cstate=0 processor.max_cstate=1 idle=poll "

最后执行 update-grub 后重启


BIOS 修改 🔗︎

如果上面 更改启动参数 无效的话, 可以尝试直接BIOS设置:

1
2
3
4
# BIOS 修改思路: 在CPU设置里, C-state 锁定使用 `0`, 关闭 P-State 自动跳转.
1. EIST 相关功能: 禁用				(P-state 相关)
2. C-State 相关功能: C0 或 C0/C1				(C-state 相关)
2. C2 - C10 间之类的相关功能: 全部禁用	(C-state 相关)


kernel.perf_event_max_sample_rate 报错 🔗︎

在执行clang编译等占用cpu较多的情况下,可能会遇到类似如下报错

perf: interrupt took too long (3923 > 3922), lowering kernel.perf_event_max_sample_rate to 50750

伴随的是你的编译或运行的其他程序很可能会失败.

解决方法:

查看当前 perf_cpu_time_max_percent
cat /proc/sys/kernel/perf_cpu_time_max_percent
25

取消 perf_cpu_time_max_percent 动态限制的功能
sysctl -w kernel.perf_cpu_time_max_percent=0
# 你也可以设置 0-100 之间的其他值, 减少出错概率, 因为这是我个人使用的机器, 为了追求好用, 这里直接禁用掉该功能.
# 将 kernel.perf_cpu_time_max_percent=0 添加到 /etc/sysctl.conf 将永久有效

查询当前睿频 🔗︎

cat /proc/cpuinfo | grep -i mhz

补充和完善 🔗︎

使用 AMD专用内存条 目前没发现其他问题.

QTJ1 PVE效果图 QTJ1 PVE效果图


最后 🔗︎

这款配套硬件有着强大的处理器和巨大的内存空间, 但也需要你对电脑硬件相对熟悉, 和比较丰富的硬件使用经验.