Вопрос или проблема
У меня есть пара серверов CentOS 7 (7.9.2009) с 8 физическими ЦП каждого. Из них я пытаюсь изолировать ядра 4-8 (то есть 3-7, как их видит ОС).
Я добавил тег isolcpus=3-7
в /etc/default/grub
после параметра GRUB_CMDLINE_LINUX
, выполнил grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
для генерации нового конфигурационного файла и перезагрузил.
Оба сервера соблюдают настройки, что видно в /sys/devices/system/cpu/isolated
– там показываются ядра 3-7, как я указал.
Однако на одном из серверов только одно из предполагаемых ядер имеет запущенные системные процессы (systemd
, lvmetad
и так далее) – несмотря на несколько перезагрузок, ОС, кажется, не соблюдает изоляцию ядра на практике.
Я использую команду numactl
, чтобы увидеть, какие ядра изолированы, и вывод отличается между серверами (команда numactl -s | grep physcpubind
):
Сервер 1 (соблюдает изоляцию):
physcpubind: 0 1 2 3
Сервер 2 (не соблюдает изоляцию):
physcpubind: 4 5 6 7
Я довольно запутан, что может вызывать это и как это решить – любые советы будут очень признательны.
Спасибо!
Где ваши ЦП 0-3 на 2-м сервере?
Судя по выводу вашего numactl, у вас по какой-то причине только 4-7 в онлайне, и если вы изолируете его, то ядро игнорирует ваш параметр isolcpus, потому что вы не можете изолировать ЦП загрузки. Попробуйте isolcpus=0-3,5-7
или isolcpus=5-7
для подтверждения. Обратите внимание, что изоляция ЦП после последнего работающего ЦП может также иметь такой же эффект, но также зависит от информации о железе, предоставленной ядру, поэтому это может работать в некоторых случаях и не работать в других.
Вывод lscpu -p
с обоих серверов поможет в дальнейшей отладке. Также посмотрите в dmesg после загрузки на наличие необычных сообщений, связанных с ЦП или опцией командной строки isolcpus.
Ответ или решение
Вопрос, который вы подняли, касается изоляции ядер в CentOS 7 и соответствия этой конфигурации в разных серверах. Давайте разберем ситуацию более детально, уделяя внимание каждому аспекту проблемы.
Проблема с изоляцией ядер
На вашем сервере, где была применена настройка isolcpus=3-7
, вы заметили, что несмотря на то, что в /sys/devices/system/cpu/isolated
указаны эти ядра как изолированные, фактически только одно из них используется системными процессами. Это и вызывает сомнения в правильности работы настройки изоляции.
Возможные причины проблемы
-
Текущее состояние процессоров:
Используя командуnumactl
, вы заметили различия в выводе между двумя серверами. На первом сервере показано, что запущены только ядра 0-3, в то время как на втором — 4-7. Это может указывать на то, что ядра 0-3 на втором сервере недоступны для использования, например, они могут отображаться как отключенные в BIOS или из-за аппаратной конфигурации системы. -
Изоляция перезапускаемого процессора:
Ключевая проблема может заключаться в том, что ядра, которые вы пытаетесь изолировать, не должны быть первичными (обрабатывающими) ядрами. Ядро, с которого начинается загрузка, всегда должно оставаться активным. Если в конфигурацииisolcpus
у вас указаны ядра, которые являются первыми в множестве (например, 0-3), это может привести к тому, что система игнорирует вашу настройку. -
Информация о CPU:
Чтобы углубиться в анализ, полезно получить информацию о конфигурации процессоров с помощью командыlscpu -p
. Сравнив результаты обеих машин, вы сможете выявить различия, которые могут повлиять на поведение системы. -
Логи системы:
Полезно также проверить вывод командыdmesg
после загрузки системы на предмет ошибок или предупреждений, связанных с конфигурацией ядер или параметрами командной строкиisolcpus
. Возможно, система не может корректно инициализировать или поддерживать изоляцию в условиях текущей конфигурации оборудования.
Рекомендации по устранению проблемы
-
Измените настройки
isolcpus
:
Попробуйте использовать альтернативные конфигурации для параметраisolcpus
, такие какisolcpus=0-3,5-7
илиisolcpus=5-7
. Это может помочь системе корректно распознать и изолировать имеющиеся ядра. -
Проверка BIOS:
Убедитесь, что опции BIOS соответствуют вашим ожиданиям. Проверьте, активны ли все процессоры и какие ядра доступны для операционной системы. -
Обновление системы:
Убедитесь, что ваша система обновлена. Иногда проблемы с аппаратной совместимостью могут быть решены простым обновлением ядра или системных библиотек. -
Тестирование:
После внесения любых изменений всегда перезагружайте машину и проверяйте результаты. Работайте с инструментами мониторинга ресурсов, чтобы убедиться, что изоляция применяется на практике.
Заключение
Проблема с изоляцией ядер в CentOS 7 может быть вызвана различными факторами, начиная от аппаратного состояния и заканчивая неправильной конфигурацией системы. Следуя вышеизложенным рекомендациям и выполняя тщательный анализ, вы сможете выявить и устранить источник проблемы. Если после всех попыток проблема останется, возможно, стоит рассмотреть возможность обращения к профессиональному сообществу или поддержке CentOS для решения специфических проблем с конфигурацией вашей системы.