CentOS 7 – Изолированные ядра на практике не изолированы

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

У меня есть пара серверов 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 указаны эти ядра как изолированные, фактически только одно из них используется системными процессами. Это и вызывает сомнения в правильности работы настройки изоляции.

Возможные причины проблемы

  1. Текущее состояние процессоров:
    Используя команду numactl, вы заметили различия в выводе между двумя серверами. На первом сервере показано, что запущены только ядра 0-3, в то время как на втором — 4-7. Это может указывать на то, что ядра 0-3 на втором сервере недоступны для использования, например, они могут отображаться как отключенные в BIOS или из-за аппаратной конфигурации системы.

  2. Изоляция перезапускаемого процессора:
    Ключевая проблема может заключаться в том, что ядра, которые вы пытаетесь изолировать, не должны быть первичными (обрабатывающими) ядрами. Ядро, с которого начинается загрузка, всегда должно оставаться активным. Если в конфигурации isolcpus у вас указаны ядра, которые являются первыми в множестве (например, 0-3), это может привести к тому, что система игнорирует вашу настройку.

  3. Информация о CPU:
    Чтобы углубиться в анализ, полезно получить информацию о конфигурации процессоров с помощью команды lscpu -p. Сравнив результаты обеих машин, вы сможете выявить различия, которые могут повлиять на поведение системы.

  4. Логи системы:
    Полезно также проверить вывод команды dmesg после загрузки системы на предмет ошибок или предупреждений, связанных с конфигурацией ядер или параметрами командной строки isolcpus. Возможно, система не может корректно инициализировать или поддерживать изоляцию в условиях текущей конфигурации оборудования.

Рекомендации по устранению проблемы

  1. Измените настройки isolcpus:
    Попробуйте использовать альтернативные конфигурации для параметра isolcpus, такие как isolcpus=0-3,5-7 или isolcpus=5-7. Это может помочь системе корректно распознать и изолировать имеющиеся ядра.

  2. Проверка BIOS:
    Убедитесь, что опции BIOS соответствуют вашим ожиданиям. Проверьте, активны ли все процессоры и какие ядра доступны для операционной системы.

  3. Обновление системы:
    Убедитесь, что ваша система обновлена. Иногда проблемы с аппаратной совместимостью могут быть решены простым обновлением ядра или системных библиотек.

  4. Тестирование:
    После внесения любых изменений всегда перезагружайте машину и проверяйте результаты. Работайте с инструментами мониторинга ресурсов, чтобы убедиться, что изоляция применяется на практике.

Заключение

Проблема с изоляцией ядер в CentOS 7 может быть вызвана различными факторами, начиная от аппаратного состояния и заканчивая неправильной конфигурацией системы. Следуя вышеизложенным рекомендациям и выполняя тщательный анализ, вы сможете выявить и устранить источник проблемы. Если после всех попыток проблема останется, возможно, стоит рассмотреть возможность обращения к профессиональному сообществу или поддержке CentOS для решения специфических проблем с конфигурацией вашей системы.

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

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