Как отключить функцию горячей замены процессора (и поток ядра) в Linux-5.10.24

Вопрос или проблема

Я работаю над встроенной системой 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: Отключение конфигурации Ядра

  1. Откройте интерфейс настройки конфигурации ядра:
    Обычно для этого используется команда make menuconfig в каталоге, где находится исходный код ядра.

  2. Перейдите в раздел "Ключевые особенности ядра" (Kernel Features):
    Найдите параметр CONFIG_HOTPLUG_CPU. Это именно то, что включает поддержку горячей замены процессоров.

  3. Измените настройки:
    Убедитесь, что опция CONFIG_HOTPLUG_CPU отключена. Если она заранее выбрана, вам, возможно, придется отключить другие опции, которые зависят от неё, такие как PM_SLEEP_SMP, чтобы успешно произвести изменения.

  4. Сохраните конфигурации и выйдите из меню.

Шаг 2: Проверка зависимостей

Поскольку CONFIG_HOTPLUG_CPU может зависеть от других параметров, вам нужно проверить, какие конфигурации активированы. В частности, обратите внимание на отношения с SMP (многопроцессорная поддержка) и возможности управления энергопотреблением. Если у вас включен SMP, возможно, запуск потоков cpuhp будет по-прежнему осуществляться.

Шаг 3: Компиляция и установка

После внесения всех необходимых изменений, выполните следующие команды:

make
make modules_install
make install

Перезагрузите устройство, чтобы новойильспоня́емые изменения вступили в силу.

Шаг 4: Проверка наличия потоков

После перезагрузки системы выполните команду ps -ax | grep cpuhp, чтобы убедиться, что потоки cpuhp/0 и cpuhp/1 больше не отображаются. Если они по-прежнему присутствуют, стоит рассмотреть возможность проверки дополнительных параметров конфигурации, которые могут влиять на создание этих потоков.

Дополнительные меры

  1. Внимание к ресурсам:
    Будьте готовы к тому, что отключение функции горячей замены процессоров может повлиять на некоторые функции энергосбережения и производительность в режиме ожидания. Поэтому вам следует оценить потребности вашей системы в управлении энергией.

  2. В случае возникновения ошибок:
    Если вы столкнетесь с проблемами при сборке или загрузке с изменённой конфигурацией, вернитесь к предыдущей версии конфигурации или попробуйте включить другие связные параметры, возможно нужные для вашей архитектуры.

Заключение

Изменение конфигурации ядра может быть сложной задачей, но при правильной последовательности действий и понимания зависимостей, вы сможете успешно отключить функцию горячей замены процессоров в вашей системе на базе Linux-5.10.24. Если этого не удастся добиться, возможно, лучше принять существующее наличие потоков cpuhp, которые, как правило, не являются ресурсоемкими и находятся в спящем состоянии, тем самым не создавая значительной нагрузки на систему.

Оцените материал
Добавить комментарий

Капча загружается...