私は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つのスレッドが常に存在することを意味します!
したがって、この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を無効にすることはできますが、一部のドライバは依存関係をうまく処理できないため、後でカーネルを構築できるかどうか疑問に思うかもしれません(しかしうまくいくようです)。