Установки Linux

Intel рекомендует следующие установки для включения согласованности измерений производительности в дистрибутивах Linux*, поддерживаемых программным обеспечением хоста инфраструктуры Intel® Omni-Path.

irqbalance

Основной целью irqbalance является распределение аппаратных прерываний по процессорам в системе со множеством процессоров для увеличения производительности. Вы устанавливаете --hintpolicy в exact для работы с алгоритмами Receive и SDMA в своём драйвере HFI1.

Для реализации необходимых установок irqbalance осуществите следующие шаги:

  1. Установите пакет irqbalance, если он ещё не установлен.

    
    # yum install irqbalance
    		
  2. В файл /etc/sysconfig/irqbalance добавьте следующую строку:

    
    IRQBALANCE_ARGS=--hintpolicy=exact
    		
  3. После загрузки драйвера 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

Драйвер Intel P-State является определяемым по умолчанию для RHEL* 7.x, поэтому не требуются никакие дополнительные установки. Этот драйвер рекомендуется применять при использовании процессоров Intel® Xeon Phi™, а такж им можно пользоваться и с процессорами Intel® Xeon®.

Если вы ранее запретили свой драйвер P-state, вам следует его повторно включить.

Для повторного разрешения вашего драйвера P-state:

  1. В /etc/default/grub удалите intel_pstate=disable из командной строки GRUB_CMDLINE_LINUX.

  2. Примените это изменение воспользовавшись:

    
    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
     	   
  3. Выполните перезагрузку.

Чтобы ваш ЦПУ работал на своей максимальной частоте без турбирования (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.

Применение драйвера ACPI CPUfreq и управляющего устройства cpupower

Если вы удовлетворены с поведением вашей системы при использовании драйвера 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) энергопотреблением ЦПУ.

Для настройки тактовой частоты ЦПУ и устройства управления энергопотреблением:

  1. Установите значения тактовой частоты и устройства управления, воспользовавшись приведённой ниже командной строкой:

    
    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:

  1. Убедитесь, что режим Turbo включён в вашем BIOS (как это рекомендуется в Установках BIOS).

  2. Установите значение частоты с завершающим "01" в конце величины для тактовой частоты. Это включит все имеющиеся преимущества Turbo.

К примеру, если вы применяете процессор Intel® Xeon® E5-2699 v3 (с номиналом тактовой частоты 2.3ГГц), то соответствующие параметры в вашей команде должны быть следующими:


sudo cpupower -c all frequency-set --min 2.301GHz --max 2.301GHz -g Performance
		

Переключение на драйвер Intel P-State для исполнения определённых инструментов FastFabric

Некоторые предоставляемые 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 осуществите следующие шаги:

  1. Проверьте что установлен пакет cpupowerutils.

    
    # yum install cpupowerutils
     	   
  2. Убедитесь присутствует активным ли какой из драйверов cpufreq.

    
    # cpupower frequency-info -d
     	   
  3. Выгрузите иной драйвер ядра cpufreq (если это требуется):

    
    # rmmod acpi_cpufreq
     	   
  4. Загрузите драйвер intel_pstate.

    
    # modprobe intel_pstate
     	   
  5. Установите cpufreq устройства управления (governor) в значение "Ghjbpdjlbntkmysq".

    
    # cpupower -c all frequency-set -g performance
     	   
  6. После применения hostverify.sh или прочих инструментов, для которых необходима установка Intel P-state вы можете выполнить перезагрузку чтобы вернуть свой драйвер acpi_cpufreq.

 

Загрузка драйвера Intel P-State в момент загрузки системы

Для загрузки драйвера Intel P-State в момент начальной загрузки системы выполните следующие действия:

  1. Создайте файл сценария /etc/sysconfig/modules/intel_pstate.modules и добавьтне в него приводимый ниже текст:

    
    #!/bin/sh
    /sbin/modprobe intel_pstate >/dev/null 2>&1
     	   
  2. Для приведённого выше файла добавьте полномочия на его исполнение.

    
    # chmod +x /etc/sysconfig/modules/intel_pstate.modules
     	   
  3. Перегрузите свою систему чтобы выполненные изменения вступили в действие.

  4. Убедитесь что драйвер Intel P-state загружен.

  5. Установите пакет cpupowerutils если он ещё не установлен.

    
    # yum install cpupowerutils
     	   
  6. Установите значение cpufreq устройства управления (governor) в значение "Производительный".

    
    # cpupower -c all frequency-set -g performance
     	   

Для повторного включения драйвера acpi_cpufreq осуществите следующее:

  1. Запретите 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
     	   
  2. Примените произведённые изменения для их использования:

    
    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
     	   
  3. Осуществите перезагрузку.

    Когда ваша система вернётся в рабочее состояние с отключённым intel_pstate, загрузится драйвер acpi_cpufreq.

Не включайте intel_iommu

Настройка intel_iommu=on в командной строке вашего ядра может вредить производительности глаголов и MPI. Порой intel_iommu необходим если вы исполняете приложения из какой- то виртуальной машины (ВМ). При обычных приложениях Высокопроизводительных вычислений вы не применяете ВС, таким образом, intel_iommu не установлен.

Для удаления intel_iommu из вашего файла grub:

  1. Переместитесь в файл /etc/default/grub.

  2. Удалите intel_iommu=on из командной строки вашего ядра.

    
    New-VM -Name VM01 -Generation 2
     	   

Прозрачность Huge Pages

Прозрачные 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 в течении продолжительное время может увеличиваться фрагментация памяти, которая существенно определяется природой работающих в ней приложений. Чем больше запрашивающих у ядра выделения и освобождения памяти процессов, тем быстрее физическая память становится фрагментированной. Если это происходит, производительность приложений может существенно падать. Из- за данной проблемы с течением времени может существенно снижаться производительность тестов и приложений.

Администраторы кластера/ системы могут предпринять шаги в отношении проблемы фрагментации памяти, как это описано ниже. Отметим, что пользователи не будут способны применить свои установки пока их системный администраторы не предпримут своих шагов первыми.

 

Настройки системного администратора

  1. Включите THP в значение "Всегда" (always) как и для Прозрачность Huge Pages.

  2. В качестве альтернативы THP зарезервируйте huge pages с помощью записей sysfs nr_hugepages или nr_overcommit_hugepages.

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

    
    echo 3 >/proc/sys/vm/drop_caches
    echo 1 >/proc/sys/vm/compact_memory
     	   
  4. Установка меньшего числа Контекстов пользователя с помощью параметра num_user_contexts может выделить большее число дескрипторов TID для каждого контекста, что может лучше работать с фрагментированной памятью. Обратитесь к Тюнинг производительности MPI в узлах с продуктами семейства Intel® Xeon Phi™ x200 второго шага по руководству относительно данного параметра драйвера hfi1.

 

Настройки пользователя

Ниже приводятся установки, осуществляемые пользователями

  1. Допустим, что ваш системный администратор включил THP (как это описано в п.1 предыдущего раздела), тогда сам пользователь может выравнивать буферы MPI большего размера на границы в 2M и наполнять общий размер кратным 2M.

    Вы можете воспользоваться posix_memalign или _mm_malloc Intel чтобы вызвать попытку выделения со стороны ОС страниц по 2 МБ.

  2. В предположении что ваш системный администратор разрешил альтернативу THP (описанную в п.2 предыдущего раздела), сам пользователь может в явном виде выделять huge pages при помощи mmap, malloc Intel® Threading Building Blocks (TBB) с TBB_MALLOC_USE_HUGE_PAGES=1, или через libhugetlbfs.