Вопрос или проблема
Я работаю над встроенной системой Linux, которая использует ядро-5.10.24.
Поскольку ресурсы системы ограничены, я хочу минимизировать использование ЦП/памяти/хранилища.
Из ps -ax
я нашел 2 потока ядра, как показано ниже,
14 root 0:00 [cpuhp/0]
15 root 0:00 [cpuhp/1]
Я думаю, что они используются для горячей замены ЦП, и в этой системе НЕТ сценариев использования горячей замены ЦП, поэтому я хочу отключить эту функцию и не создавать эти 2 потока ядра.
Я попытался отключить эту конфигурацию принудительно (удалив select SYS_SUPPORTS_HOTPLUG_CPU
из arch/ARM/Kconfig и других).
Но после развертывания нового ядра эти 2 потока ядра все еще существуют.
Проверяя коды, кажется, что эти 2 потока создаются вне зависимости от CONFIG_HOTPLUG_CPU
и CONFIG_SYS_SUPPORTS_HOTPLUG_CPU
, что означает, что когда настроен SMP, эти 2 потока всегда присутствуют!
Поэтому я не уверен, есть ли способ отключить создание этих 2 потоков ядра. Если нет, мне придется смириться с ними, предполагая, что они не будут занимать слишком много ЦП и памяти для работы.
Обновлено с учетом комментария dhanushka
Symbol: HOTPLUG_CPU [=y]
Type : bool
Defined at arch/mips/Kconfig:2942
Prompt: Поддержка горячезаменяемых ЦП
Depends on: SMP [=y] && SYS_SUPPORTS_HOTPLUG_CPU [=y]
Location:
-> Тип ядра
(2) -> Поддержка многопроцессорности (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), поэтому учитывайте свои требования к управлению энергией и как отключение горячей замены ЦП может на них повлиять.
Конфигурация ядра:
Документация ядра говорит, что CONFIG_HOTPLUG_CPU должен быть включен, чтобы горячая замена ЦП работала.
- Вы отключали это через menuconfig?
- Если нет, проверяли ли вы menuconfig, чтобы увидеть, отключено ли это после
ваших изменений?
Если вы попытаетесь отключить это через menuconfig, вам сначала придется отключить серию других конфигураций и успешно собрать ядро после их отключения. Например, вот что menuconfig показывает на моей платформе:
CONFIG_HOTPLUG_CPU:
Скажите Y здесь, чтобы поэкспериментировать с включением и выключением ЦП. ЦП
можно контролировать через /sys/devices/system/cpu.
Symbol: HOTPLUG_CPU [=y]
Type : bool
Defined at arch/arm64/Kconfig:985
Prompt: Поддержка горячезаменяемых ЦП
Location:
-> Функции ядра
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, но я сомневаюсь, что вам удастся собрать ядро после этого, потому что некоторые драйверы не обрабатывают зависимости должным образом (но, похоже, у вас все работает).
Это не единственная проблема, которую это вызывает. На моих машинах он использует порт 53, тот же, что и DNS, который теперь не запустится. Для меня DNS намного важнее, чем функция, которую я, вероятно, никогда не использую.
Ответ или решение
Чтобы отключить функцию "горячей замены" процессоров и связанные с ней потоки ядра в системе Linux-5.10.24, необходимо выполнить несколько шагов. Прежде всего стоит отметить, что отключение функции горячей замены процессоров может потребовать модификации конфигурации ядра и тщательной проверки зависимостей, так как эта функция может быть связана с другими аспектами управления энергопотреблением системы.
Шаг 1: Отключение конфигурации Ядра
-
Откройте интерфейс настройки конфигурации ядра:
Обычно для этого используется командаmake menuconfig
в каталоге, где находится исходный код ядра. -
Перейдите в раздел "Ключевые особенности ядра" (Kernel Features):
Найдите параметрCONFIG_HOTPLUG_CPU
. Это именно то, что включает поддержку горячей замены процессоров. -
Измените настройки:
Убедитесь, что опцияCONFIG_HOTPLUG_CPU
отключена. Если она заранее выбрана, вам, возможно, придется отключить другие опции, которые зависят от неё, такие какPM_SLEEP_SMP
, чтобы успешно произвести изменения. -
Сохраните конфигурации и выйдите из меню.
Шаг 2: Проверка зависимостей
Поскольку CONFIG_HOTPLUG_CPU
может зависеть от других параметров, вам нужно проверить, какие конфигурации активированы. В частности, обратите внимание на отношения с SMP
(многопроцессорная поддержка) и возможности управления энергопотреблением. Если у вас включен SMP, возможно, запуск потоков cpuhp
будет по-прежнему осуществляться.
Шаг 3: Компиляция и установка
После внесения всех необходимых изменений, выполните следующие команды:
make
make modules_install
make install
Перезагрузите устройство, чтобы новойильспоня́емые изменения вступили в силу.
Шаг 4: Проверка наличия потоков
После перезагрузки системы выполните команду ps -ax | grep cpuhp
, чтобы убедиться, что потоки cpuhp/0
и cpuhp/1
больше не отображаются. Если они по-прежнему присутствуют, стоит рассмотреть возможность проверки дополнительных параметров конфигурации, которые могут влиять на создание этих потоков.
Дополнительные меры
-
Внимание к ресурсам:
Будьте готовы к тому, что отключение функции горячей замены процессоров может повлиять на некоторые функции энергосбережения и производительность в режиме ожидания. Поэтому вам следует оценить потребности вашей системы в управлении энергией. -
В случае возникновения ошибок:
Если вы столкнетесь с проблемами при сборке или загрузке с изменённой конфигурацией, вернитесь к предыдущей версии конфигурации или попробуйте включить другие связные параметры, возможно нужные для вашей архитектуры.
Заключение
Изменение конфигурации ядра может быть сложной задачей, но при правильной последовательности действий и понимания зависимостей, вы сможете успешно отключить функцию горячей замены процессоров в вашей системе на базе Linux-5.10.24. Если этого не удастся добиться, возможно, лучше принять существующее наличие потоков cpuhp
, которые, как правило, не являются ресурсоемкими и находятся в спящем состоянии, тем самым не создавая значительной нагрузки на систему.