我正在使用 kernel-5.10.24 的嵌入式 Linux 系统。
由于系统资源有限,所以我想尽量减少 CPU/内存/存储的使用。
从ps -ax
我发现 2 个内核线程如下,
14 root 0:00 [cpuhp/0]
15 root 0:00 [cpuhp/1]
我认为它们用于 CPU 热插拔,并且该系统中没有 CPU 热插拔用例,所以我想禁用该功能而不创建这 2 个内核线程。
我试图强制禁用此配置(select SYS_SUPPORTS_HOTPLUG_CPU
从 arch/ARM/Kconfig 等中删除)。
但是部署新内核后,这两个内核线程仍然存在。
通过检查代码,这两个线程似乎是在不考虑CONFIG_HOTPLUG_CPU
and的情况下创建的CONFIG_SYS_SUPPORTS_HOTPLUG_CPU
,这意味着当配置 SMP 时,这两个线程总是存在的!
所以我不确定是否有办法禁止创建这两个内核线程。如果不是,我必须和他们一起生活,假设他们不会占用太多的 CPU 和内存来运行。
根据 dhanushka 的评论更新了内核菜单配置
Symbol: HOTPLUG_CPU [=y]
Type : bool
Defined at arch/mips/Kconfig:2942
Prompt: Support for hot-pluggable CPUs
Depends on: SMP [=y] && SYS_SUPPORTS_HOTPLUG_CPU [=y]
Location:
-> Kernel type
(2) -> Multi-Processing support (SMP [=y])
Selected by [y]:
- PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y]
与 dhanushka 的评论相同。
我将尝试禁用它并更新此问题。
正如我所说,cpuhp0/1
似乎无法禁用。
不是真正的答案,但想添加一些东西。您一定已经尝试过这些,但请参阅下文以防您错过。
如果你有 top(1),你可以查看他们的资源使用情况。或者您可以使用 /proc/[pid]/status 等来检查它们。无论哪种方式,您都会看到它们并不需要资源,而且大部分都处于睡眠 (S) 状态。
您还会从内核文档和配置中看到它与电源管理(SMP 暂停/恢复)相关,因此请考虑您的电源管理要求以及禁用 CPU 热插拔会对它们产生怎样的影响。
内核配置:
内核文档说需要启用 CONFIG_HOTPLUG_CPU 才能使 CPU 热插拔工作。
如果您尝试从 menuconfig 禁用它,您首先必须禁用一系列其他配置,并且在禁用它们后能够成功构建内核。例如,这是 menuconfig 在我的平台上显示的内容:
所以,我根本无法从 menuconfig 中禁用它,除非我解决了
使它成为可能。
你会有类似的约束。您可以尝试解决它们并最终禁用 CONFIG_HOTPLUG_CPU,但我怀疑您之后是否能够构建内核,因为某些驱动程序不能很好地处理依赖关系(但看起来对您有用)。