![Linux-5.10.24에서 CPU 핫플러그 기능(및 커널 스레드)을 비활성화하는 방법](https://linux55.com/image/219529/Linux-5.10.24%EC%97%90%EC%84%9C%20CPU%20%ED%95%AB%ED%94%8C%EB%9F%AC%EA%B7%B8%20%EA%B8%B0%EB%8A%A5(%EB%B0%8F%20%EC%BB%A4%EB%84%90%20%EC%8A%A4%EB%A0%88%EB%93%9C)%EC%9D%84%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
저는 kernel-5.10.24를 사용하여 임베디드 Linux 시스템을 개발 중입니다.
시스템 리소스가 제한되어 있으므로 CPU/메모리/스토리지 사용량을 최소화하고 싶습니다. 내가 찾은 2개의 커널 스레드는 다음과 같습니다
.ps -ax
14 root 0:00 [cpuhp/0]
15 root 0:00 [cpuhp/1]
나는 이것이 CPU 핫 플러깅을 위한 것이라고 생각하며 이 시스템에는 CPU 핫 플러깅을 위한 사용 사례가 없으므로 해당 기능을 비활성화하고 이 2개의 커널 스레드를 생성하지 않기를 원합니다.
이 구성을 강제로 비활성화하려고 했습니다( select SYS_SUPPORTS_HOTPLUG_CPU
arch/ARM/Kconfig 등에서 제거).
그러나 새 커널을 배포한 후에도 이 2개의 커널 스레드는 여전히 존재합니다.
코드를 조사해 보면 이 2개의 스레드 생성은 및 와 아무 관련이 없는 것으로 보입니다 CONFIG_HOTPLUG_CPU
. CONFIG_SYS_SUPPORTS_HOTPLUG_CPU
이는 SMP가 구성되면 이 2개의 스레드가 항상 존재한다는 것을 의미합니다!
그래서 이 두 개의 커널 스레드 생성을 비활성화하는 방법이 있는지 확실하지 않습니다. 그렇지 않다면 실행하는 데 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
비활성화는 불가능해 보입니다.
답변1
실제로 답변은 아니지만 뭔가 추가하고 싶었습니다. 이미 시도해 보셨겠지만, 놓친 경우를 대비해 아래를 참조하세요.
top(1)이 있으면 리소스 사용량을 확인할 수 있습니다. 또는 /proc/[pid]/status 등을 사용하여 확인할 수 있습니다. 어느 쪽이든 리소스를 소비하지 않으며 대부분 절전 상태에 있다는 것을 알 수 있습니다.
또한 커널 문서 및 구성에서 전원 관리(SMP 일시 중지/재개)와 관련되어 있음을 확인할 수 있으므로 전원 관리 요구 사항과 CPU 핫플러그 비활성화가 이에 미치는 영향을 고려하십시오.
커널 구성:
커널 문서에는 CPU 핫 플러깅이 작동하려면 CONFIG_HOTPLUG_CPU를 활성화해야 한다고 나와 있습니다.
- menuconfig에서 비활성화하셨나요?
- 그렇지 않은 경우 menuconfig를 확인하여 변경 후 비활성화되었는지 확인했습니까?
menuconfig에서 이를 비활성화하려면 먼저 다른 구성을 비활성화해야 하며 비활성화한 후 커널을 성공적으로 빌드할 수 있어야 합니다. 예를 들어, 내 플랫폼에 menuconfig가 표시되는 내용은 다음과 같습니다.
CONFIG_HOTPLUG_CPU:
Say Y here to experiment with turning CPUs off and on. CPUs
can be controlled through /sys/devices/system/cpu.
Symbol: HOTPLUG_CPU [=y]
Type : bool
Defined at arch/arm64/Kconfig:985
Prompt: Support for hot-pluggable CPUs
Location:
-> Kernel Features
Selects: GENERIC_IRQ_MIGRATION [=y]
Selected by [y]:
- PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y]
따라서 해결하지 않는 한 menuconfig에서 전혀 비활성화할 수 없습니다.
Selected by [y]:
- PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y]
이것이 가능해집니다.
비슷한 제한 사항이 있습니다. 이 문제를 해결하고 결국 CONFIG_HOTPLUG_CPU를 비활성화할 수는 있지만 일부 드라이버는 종속성을 잘 처리하지 못하기 때문에 나중에 커널을 빌드할 수 있을지 의문입니다(하지만 작동할 것 같습니다).