Установки Linux
Содержание
Intel рекомендует следующие установки для включения согласованности измерений производительности в дистрибутивах Linux*, поддерживаемых программным обеспечением хоста инфраструктуры Intel® Omni-Path.
Основной целью irqbalance
является распределение аппаратных прерываний по процессорам в системе со множеством процессоров
для увеличения производительности. Вы устанавливаете --hintpolicy
в exact
для работы с алгоритмами Receive и SDMA в своём драйвере HFI1.
Для реализации необходимых установок irqbalance
осуществите следующие шаги:
-
Установите пакет
irqbalance
, если он ещё не установлен.# yum install irqbalance
-
В файл
/etc/sysconfig/irqbalance
добавьте следующую строку:IRQBALANCE_ARGS=--hintpolicy=exact
-
После загрузки драйвера HFI1 перезапустите свою службу
irqbalance
:/bin/systemctl restart irqbalance.service
Методы сбережения энергопотребления в ЦПУ могут оказывать обратное воздействие на производительность. ЦПУ снижает энергопотребление путём уменьшения своей тактовой частоты на основании устойчивого запроса и тепловых условий. Это может приводить к значительной экономии электроэнергии и требований по охлаждению, однако это может снизить значение производительности или сделать её измерения более изменчивыми. Термические условия процессора плохо предсказуемы, что влечёт за собой изменения в производительности ЦПУ при различных запусках.
Устанавливаемым по умолчанию драйвером в RHEL* 7.x является драйвер Intel P-State (intel_pstate
).
Также доступен альтернативный драйвер с названием Advanced Configuration and Power Interface (ACPI) CPUfreq
(acpi_cpufreq
). Каждый из них имеет свои преимущества и недостатки, но в любой момент времени может быть
доступен только один из них. В данном разделе мы как применять каждый из них для согласованных измерений наилучших показателей производительности.
Установка вашего драйвера масштабирования частоты предлагается выполнять в процессе подъёма кластера/ инфраструктуры для того чтобы определить что
все компоненты вашего кластера работают в свою полную мощность.
В долгосрочной перспективе промышленного применения кластера/ супер- компьютера могут быть желательны иные установки, описываемые в последующих разделах, которые желательны для масштабирования вверх при наличии нагрузки и снижении масштаба для сбережения энергии при простоях.
Драйвер Intel P-State является определяемым по умолчанию для RHEL* 7.x, поэтому не требуются никакие дополнительные установки. Этот драйвер рекомендуется применять при использовании процессоров Intel® Xeon Phi™, а такж им можно пользоваться и с процессорами Intel® Xeon®.
Если вы ранее запретили свой драйвер P-state, вам следует его повторно включить.
Для повторного разрешения вашего драйвера P-state:
-
В
/etc/default/grub
удалитеintel_pstate=disable
из командной строкиGRUB_CMDLINE_LINUX
. -
Примените это изменение воспользовавшись:
if [ -e /boot/efi/EFI/redhat/grub.cfg ]; then GRUB_CFG=/boot/efi/EFI/redhat/grub.cfg elif [ -e /boot/grub2/grub.cfg ]; then GRUB_CFG=/boot/grub2/grub.cfg fi grub2-mkconfig -o $GRUB_CFG
-
Выполните перезагрузку.
Чтобы ваш ЦПУ работал на своей максимальной частоте без турбирования (P1) и без масштабирования на более низкие частоты, пользуясь полномочиями root установите значение минимума частоты в 100% как это показано ниже:
echo 100 > /sys/devices/system/cpu/intel_pstate/min_perf_pct
Для работы вашего ЦПУ на его максимальной турбированной частоте настройте в своём BIOS следующие значения:
-
Установите Intel® Turbo Boost Technology > Enabled.
-
Если это имеется в вашем BIOS, установите Advanced > Advanced Power Management Configuration > CPU P State Control > Turbo Mode.
-
Настройте
echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
. -
Установите политику cpufreq в значение "Производительный":
cpupower frequency-set -g performance
.Для получение информации о драйвере частоы ЦПУ и прочей информации о частоте воспользуйтесь следующей командой:
cpupower frequency-info
Для получения дополнительных сведений по управлению и тюнингу поведения драйвера P-state обратитесь, пожалуйста, к https://www.kernel.org/doc/Documentation/cpu-freq/intelpstate.txt.
Если вы удовлетворены с поведением вашей системы при использовании драйвера Intel® P-State вам нет нужды устанавливать драйвер acpi_cpufreq.
Этот драйвер ACPI CPUfreq (acpi_cpufreq) совместно с cpupower может применяться для установки устойчивой тактовой частоты ЦПУ на всех ядрах ЦПУ.
Чтобы включить такой драйвер ACPI CPUfreq:
-
Запретите intel_pstate в командной строке своего ядра: измените
/etc/default/grub
добавивintel_pstate=disable
вGRUB_CMDLINE_LINUX
. Например:GRUB_CMDLINE_LINUX=vconsole.keymap=us console=tty0 vconsole.font=latarcyrheb-sun16 crashkernel=256M console=ttyS0,115200 intel_pstate=disable
-
Примените это изменение для использования:
if [ -e /boot/efi/EFI/redhat/grub.cfg ]; then GRUB_CFG=/boot/efi/EFI/redhat/grub.cfg else if [ -e /boot/grub2/grub.cfg ]; then GRUB_CFG=/boot/grub2/grub.cfg grub2-mkconfig -o $GRUB_CFG
-
Выполните перезагрузку.
После того как система вернётся в рабочее состояние с отключённым
intel_pstate
, загрузится драйвер acpi_cpufreq.
Для снижения изменений производительности при различных запусках Intel рекомендует вам установить определённое значение тактовой частоты
своего ЦПУ и применять его для настройки значения Performance
вашего устройства управления (governor)
энергопотреблением ЦПУ.
Для настройки тактовой частоты ЦПУ и устройства управления энергопотреблением:
-
Установите значения тактовой частоты и устройства управления, воспользовавшись приведённой ниже командной строкой:
sudo cpupower -c all frequency-set --min <value> --max <value> -g Performance
Где
<value>
является допустимым числом единиц (ГГц) для установок минимального и максимального значений. Отметим, что это значение может быть одним и тем же.
Например, следующая команда установит значение частот всех ядер в величину 2.3 ГГц и для установки Performance
устройства управления в случае применения драйвера acpi-cpufreq.
sudo cpupower -c all frequency-set --min 2.3GHz --max 2.3GHz -g Performance
Замечание | |
---|---|
При использовании указанной выше схемы электропитания экономия энергии снизится, а выделение тепла увеличится. |
Для получения максимальных преимуществ от режима Turbo:
-
Убедитесь, что режим Turbo включён в вашем BIOS (как это рекомендуется в Установках BIOS).
-
Установите значение частоты с завершающим "01" в конце величины для тактовой частоты. Это включит все имеющиеся преимущества Turbo.
К примеру, если вы применяете процессор Intel® Xeon® E5-2699 v3 (с номиналом тактовой частоты 2.3ГГц), то соответствующие параметры в вашей команде должны быть следующими:
sudo cpupower -c all frequency-set --min 2.301GHz --max 2.301GHz -g Performance
Некоторые предоставляемые Intel инструменты требуют применения соответствующего драйвера Intel P-State вместо драйвера acpi_cpufreq.
Например, инструментарий hostverify.sh
отказывает при работе RHEL* 6.7 если драйвер Intel P-State
не установлен в качестве применяемого по умолчанию драйвера cpufreq.
Если вы применяете драйвер acpi_cpufreq, воспользуйтесь одним из следующих методов для переключения на драйвер Intel P-State чтобы возпользоваться необходимым целевым инструментом.
Временное переключение на драйвер Intel P-State
Для временного переключения на драйвер Intel P-state осуществите следующие шаги:
-
Проверьте что установлен пакет
cpupowerutils
.# yum install cpupowerutils
-
Убедитесь присутствует активным ли какой из драйверов
cpufreq
.# cpupower frequency-info -d
-
Выгрузите иной драйвер ядра
cpufreq
(если это требуется):# rmmod acpi_cpufreq
-
Загрузите драйвер
intel_pstate
.# modprobe intel_pstate
-
Установите
cpufreq
устройства управления (governor) в значение "Ghjbpdjlbntkmysq".# cpupower -c all frequency-set -g performance
-
После применения
hostverify.sh
или прочих инструментов, для которых необходима установка Intel P-state вы можете выполнить перезагрузку чтобы вернуть свой драйвер acpi_cpufreq.
Загрузка драйвера Intel P-State в момент загрузки системы
Для загрузки драйвера Intel P-State в момент начальной загрузки системы выполните следующие действия:
-
Создайте файл сценария
/etc/sysconfig/modules/intel_pstate.modules
и добавьтне в него приводимый ниже текст:#!/bin/sh /sbin/modprobe intel_pstate >/dev/null 2>&1
-
Для приведённого выше файла добавьте полномочия на его исполнение.
# chmod +x /etc/sysconfig/modules/intel_pstate.modules
-
Перегрузите свою систему чтобы выполненные изменения вступили в действие.
-
Убедитесь что драйвер Intel P-state загружен.
-
Установите пакет
cpupowerutils
если он ещё не установлен.# yum install cpupowerutils
-
Установите значение
cpufreq
устройства управления (governor) в значение "Производительный".# cpupower -c all frequency-set -g performance
Для повторного включения драйвера acpi_cpufreq осуществите следующее:
-
Запретите
intel_pstate
в командной строке вашего ядра:Измените
/etc/default/grub
, добавивintel_pstate=disable
вGRUB_CMDLINE_LINUX
. Например:GRUB_CMDLINE_LINUX=vconsole.keymap=us console=tty0 vconsole.font=latarcyrheb-sun16 crashkernel=256M console=ttyS0,115200 intel_pstate=disable
-
Примените произведённые изменения для их использования:
if [ -e /boot/efi/EFI/redhat/grub.cfg ]; then GRUB_CFG=/boot/efi/EFI/redhat/grub.cfg else if [ -e /boot/grub2/grub.cfg ]; then GRUB_CFG=/boot/grub2/grub.cfg grub2-mkconfig -o $GRUB_CFG
-
Осуществите перезагрузку.
Когда ваша система вернётся в рабочее состояние с отключённым
intel_pstate
, загрузится драйвер acpi_cpufreq.
Настройка intel_iommu=on
в командной строке вашего ядра может вредить производительности глаголов и
MPI. Порой intel_iommu
необходим если вы исполняете приложения из какой- то виртуальной машины (ВМ). При
обычных приложениях Высокопроизводительных вычислений вы не применяете ВС, таким образом,
intel_iommu
не установлен.
Для удаления intel_iommu
из вашего файла grub:
-
Переместитесь в файл
/etc/default/grub
. -
Удалите
intel_iommu=on
из командной строки вашего ядра.New-VM -Name VM01 -Generation 2
Прозрачные Huge Pages устанавливаются в значение "всегда" (always). Это включено в значениях по умолчанию в RHEL* 7.2 и последующих версиях. Заметим, что изменение этой настройки в значение "Никогда" (never) существенно повредит пропускной способности обмена большими сообщениями (свыше 64МБ).
Если такое значение по умолчанию установлено, следующий файл должен отобразить такой вывод:
$ cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
Tckb значение "всегда" (always) не установлено во всех узлах, вы можете настроить его воспользовавшись следующей командой:
echo always > /sys/kernel/mm/transparent_hugepage/enabled
При работе Linux в течении продолжительное время может увеличиваться фрагментация памяти, которая существенно определяется природой работающих в ней приложений. Чем больше запрашивающих у ядра выделения и освобождения памяти процессов, тем быстрее физическая память становится фрагментированной. Если это происходит, производительность приложений может существенно падать. Из- за данной проблемы с течением времени может существенно снижаться производительность тестов и приложений.
Администраторы кластера/ системы могут предпринять шаги в отношении проблемы фрагментации памяти, как это описано ниже. Отметим, что пользователи не будут способны применить свои установки пока их системный администраторы не предпримут своих шагов первыми.
Настройки системного администратора
-
Включите
THP
в значение "Всегда" (always) как и для Прозрачность Huge Pages. -
В качестве альтернативы THP зарезервируйте huge pages с помощью записей sysfs
nr_hugepages
илиnr_overcommit_hugepages
. -
Для пущей гарантии того, что ваша система будет выделять для своих заданий страницы по 2M, настройте значение систему подачи заданий на сброс своих кэшей и уплотнение памяти перед каждым заданием пользователя при помощи следующих команд:
echo 3 >/proc/sys/vm/drop_caches echo 1 >/proc/sys/vm/compact_memory
-
Установка меньшего числа Контекстов пользователя с помощью параметра
num_user_contexts
может выделить большее число дескрипторов TID для каждого контекста, что может лучше работать с фрагментированной памятью. Обратитесь к Тюнинг производительности MPI в узлах с продуктами семейства Intel® Xeon Phi™ x200 второго шага по руководству относительно данного параметра драйвера hfi1.
Настройки пользователя
Ниже приводятся установки, осуществляемые пользователями
-
Допустим, что ваш системный администратор включил THP (как это описано в п.1 предыдущего раздела), тогда сам пользователь может выравнивать буферы MPI большего размера на границы в 2M и наполнять общий размер кратным 2M.
Вы можете воспользоваться
posix_memalign
или_mm_malloc
Intel чтобы вызвать попытку выделения со стороны ОС страниц по 2 МБ. -
В предположении что ваш системный администратор разрешил альтернативу THP (описанную в п.2 предыдущего раздела), сам пользователь может в явном виде выделять huge pages при помощи
mmap
,malloc
Intel® Threading Building Blocks (TBB) сTBB_MALLOC_USE_HUGE_PAGES=1
, или черезlibhugetlbfs
.