Вопрос или проблема
Я работаю над пониманием того, как включен контроллер ресурсов памяти cgroups в Ubuntu 20.04. У меня есть несколько машин с Ubuntu, которые составляют кластер Slurm 23.02.7. В cgroup.conf SchedMD утверждает:
Debian и его производные (например, Ubuntu) обычно исключают cgroups памяти и memsw (swap) по умолчанию. Чтобы включить их, добавьте следующие параметры к командной строке ядра: cgroup_enable=memory swapaccount=1
Если я следую этому совету и выполняю:
root@node01:~# grep CONFIG_MEMCG /boot/config-5.4.0-169-generic
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
# CONFIG_MEMCG_SWAP_ENABLED is not set
CONFIG_MEMCG_KMEM=y
Кажется, что вопреки мнению SchedMD, контроллер памяти cgroups уже включен по умолчанию. Однако я хотел бы получить официальную документацию о том, что именно означает каждая переменная в /boot/config-5.4.0-169-generic
. Я искал связанную страницу руководства, но не нашел ее.
Вопрос:
- Какая страница руководства или другая документация описывает конфигурации, установленные в
/boot/config-5.4.0-169-generic
?
Конфигурация ядра для Linux управляется файлами Kconfig (примерно по одному на каталог), которые включают/выключают функции или количество экземпляров. Файлы /boot/config-XXX — просто дамп текущих настроек. Вам нужно посмотреть в разделе help
для каждого значения в файлах, чтобы увидеть, что там сказано.
Вы можете использовать эти файлы конфигурации как входные данные для make oldconfig
, чтобы предустановить функции, а затем использовать make menuconfig
для получения интерактивного меню для их изменения.
https://docs.kernel.org/kbuild/kconfig-language.html может быть хорошим началом, вместе с копией дерева исходного кода ядра (чтобы увидеть файлы Kconfig).
Ответ или решение
Вопрос о документации для файла конфигурации ядра /boot/config-<kernel_version>
является актуальным, особенно в контексте вашего исследования того, как включен контроллер ресурсов памяти cgroups в Ubuntu 20.04. Исследуем этот вопрос более глубоко.
Теория
Файл /boot/config-<kernel_version>
представляет собой конфигурацию ядра для установленной версии Linux. Эти файлы являются результатом настроек различных параметров сборки ядра и отражают, какие функции включены или отключены в данной версии.
Конфигурация ядра определяется исходными файлами Kconfig, которые расположены в исходном дереве ядра Linux. Эти файлы содержат информацию о доступных параметрах сборки ядра и их описания. Они используются инструментами конфигурации ядра, такими как make menuconfig
, для упрощения процесса настройки.
Пример
Рассмотрим конкретный пример из вашего вопроса. Вы использовали команду grep CONFIG_MEMCG /boot/config-5.4.0-169-generic
и увидели следующие строки:
CONFIG_MEMCG=y
: Это означает, что поддержка cgroups для управления памятью включена в данной конфигурации.CONFIG_MEMCG_SWAP=y
: Поддержка для swap-учета также включена.# CONFIG_MEMCG_SWAP_ENABLED is not set
: Этот параметр закомментирован и не установлен, что может указывать на индивидуальную опцию, которую нужно включить.
Каждый из этих параметров имеет описание и назначение, которое можно определить, анализируя соответствующие Kconfig файлы в исходном коде ядра.
Применение
Чтобы увидеть полную документацию и описание каждого параметра, вам нужно обратиться к исходникам ядра. Вот пошаговая инструкция:
-
Получение исходников ядра: Установите соответствующую версию исходного кода ядра. Это можно сделать через пакетный менеджер
apt
или загрузить его напрямую с сайта kernel.org. -
Исследование Kconfig файлов: В исходном дереве ядра найдите файлы Kconfig. Эти файлы содержат информацию о параметрах конфигурации ядра, включая их описание. Например, можно найти файл Kconfig, связанный с настройками памяти и cgroups, и внимательно изучить секцию
help
для каждого параметра. -
Использование инструментов конфигурации: Запустите команды
make oldconfig
иmake menuconfig
, используя текущий файл конфигурации как вводные данные. Это позволит вам увидеть интерактивное меню с параметрами конфигурации, где вы сможете прочитать описания и при необходимости изменить настройки.
Ресурсы для начала
Для начала ознакомьтесь с документацией по языку Kconfig и инструментам, используемым для настройки ядра. Прекрасным ресурсом будет документация по языку Kconfig, а также любой учебник по ядру Linux, который объясняет общий подход к конфигурации ядра.
Резюме
Файл /boot/config-<kernel_version>
содержит текущие настройки конфигурации для вашего ядра Linux. Чтобы глубже понять смысл каждого параметра, необходимо обратиться к исходникам, особенно к Kconfig файлам, и использовать описательные секции help
для изучения параметров. Использование интерактивных инструментов настройки также поможет в наглядном понимании каждой настройки. Профессиональный подход к изучению этой информации позволит вам более эффективно управлять и настраивать вашу среду Ubuntu, особенно в том, что касается поддержки cgroups и управления ресурсами памяти в вашем кластере.