Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Текущий »

Для производительных систем Настройка ECSS-10 состоит из следующих этапов:

1. Выделение отдельных ядер процессора для MSR

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

  1. Открыть файл:

    /etc/default/grub

    привести параметр GRUB_CMDLINE_LINUX="" к следующему виду:

    GRUB_CMDLINE_LINUX="isolcpus=8-11"

    Данный пример изолирует ядра с 8 по 11. Также возможен вариант с перечислением 1,2,4-6 и т.п.

  2. Обновить конфигурацию grub. Для этого выполните команду:

    sudo update-grub
  3. Перезапустить систему.

    Если всё сделано правильно, то после перезагрузки на изолированных ядрах htop будет показывать 0-ую нагрузку.

2. Установка scaling_governor в режим perfomance

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

По умолчанию в Ubuntu есть пять профилей работы процессора:

Описание профилей:

  • conservative - медленно повышает частоту процессора в зависимости от нагрузки на систему и резко сбрасывает частоту к минимальной при простое.
  • ondemand - быстро повышает частоту процессора при возрастании нагрузки и медленно сбрасывает частоту к минимуму при простое.
  • userspace - позволяет указывать частоту вручную.
  • powersave - соответствует минимальной допустимой частоте CPU.
  • performance - соответствуют максимальной частоте CPU.

Система выдерживает большую нагрузку в режиме perfomance. Для того, чтобы включить данный режим по умолчанию, необходимо привести файл /etc/rc.local к следующему виду:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
exit 0
Установку необходимо делать через создание дополнительного правила в /etc/udev/rules.d/.

3. Запуск MSR на изолированных ядрах процессора

Для того, чтобы MSR запускался на отдельных ядрах процессора, необходимо привести файл /etc/systemd/system/ecss-media-server.service.d/override.con к следующему виду:

[Service]
CPUAffinity=8-11
CPUSchedulingPolicy=rr

В данном примере MSR запущен на ядрах 8,9,10,11. CPUSchedulingPolicy нужен только если указан isolcpus.

4. Настройка использования определенных ядер процессора для erlang-based служб

Для того, чтобы ядра процессора использовались правильно, необходимо скорректировать параметры запуска erlang-нод на производительных системах.

Для этого разрабатывается схема размещения нод на ядрах.
Схема разрабатывается по следующим правилам:

  • использовать более 2х ядер;
  • необходимо, чтобы одна нода не использовала ядра на разных процессорах;
  • для сильно нагруженных нод, таких как core и sip, нужно выделять индивидуальные ядра;
  • ноды, которые не загружены, можно размешать на одном ядре;
  • для core необходимо выделять большее количество ядер.

Распределения ядер на примере 2х-процессорного сервера HP BL660 c двумя процессорами Intel Xeon E5-4657L c 12 ядрами и поддержкой гипертрединга, которые могут образовать 8 виртуальных ядер:

myc  0-3
ds   4-7
core 8-23
sip  24-31
md   32-35
rest 36-39
sp   40-43
msr  44-47

Для того, чтобы сделать такое распределение нужно включить режим использования только необходимого количества ядер на erlang-ноде.
Для этого редактируем файл vm.args каждой ноды, расположенный по пути /usr/lib/ecss/ECSS-SERVICE-NAME/releases/VERSION/
Например, для ecss-core необходимо отредактировать файл:

sudo mcedit /usr/lib/ecss/ecss-core/releases/3.11.2.29/vm.args

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

Для случая 16 ядер это:

+sct L0-15c0-15
+sbt db
+S16:16

Для 8х ядер:

+sct L0-7c0-7
+sbt db
+S8:8

Для 4х ядер:

+sct L0-3c0-3
+sbt db
+S4:4

Для 2х ядер:

+sct L0-1c0-1
+sbt db
+S2:2

Следующая задача - установить сервис на выбранные ядра. Делается это аналогично тому, как описано для MSR.

Выполните команду:

sudo systemctl edit ECSS-SERVICE-NAME

Добавление параметров:

[Service]
CPUAffinity=0-3

Где в значении CPUAffinity указываются те ядра, на которых должны запускаться процессы сервиса.

Пример настройки ecss-core по указанной выше схеме:

> sudo systemctl edit ecss-core.service
[Service]
CPUAffinity=8-23

После настройки параметров CPUAffinity для всех сервисов необходимо перезагрузить конфигурацию услуг командой:

sudo systemctl daemon-reload

Перезапустить сервисы:

sudo systemctl restart ecss.slice

Убедиться в корректной привязке сервисов к ядрам можно утилитой htop, включив отображение колонки PROCESSOR.

  • Нет меток