Влияние BIOS на производительность серверов

08 Дек 2014

Влияние BIOS на производительность серверов

Самое интересное в процессорах семейства Intel Xeon E5 v3 – наличие режима Cluster-on-Die, сокращенно – COD. Это новшество открывает путь к построению еще более производительных платформ и, как следствие, к реализации с их помощью высоконагруженных систем.

Заметим, что не все процессоры Haswell-EP обладают способностью формировать внутри себя кластерные узлы, а лишь только те из них, у которых количество ядер более десяти. В чем прелесть мультиядерной кластеризации? Ответ на это вопрос можно найти в дискуссионных материалах технического центра компании Dell, адресованных специалистам по обслуживанию Haswell-серверов. Давайте проанализируем, насколько обсуждаемая тема может быть полезной отечественным серверостроителям, потребителям их продукции и разработчикам программного обеспечения для HPC и HighLoad-систем?

Теоретический базис

Что такое кластер внутри процессора Haswell-EP? Ответ на этот вопрос требует небольшого экскурса в историю серверных платформ.

С появлением двух- и более сокетных платформ, в разъемах которых гнездились процессоры со встроенным RAM-контроллером, на повестке дня встал вопрос про оптимизацию доступа к системной памяти. Суть его сводилась к тому, что без крайней необходимости процессор не должен обращаться к массиву ОЗУ, подключенному к соседнему гнезду. Понятно, что при доступе к локальным ресурсам латентность ниже, чем при обращении к ресурсам соседнего сокета. Такая топология получила название NUMA или Non-Uniform Memory Access, что подчеркивает неоднородный доступ к памяти, предоставляемый процессорам серверной платформы.

Топология Cluster-on-Die в установках BIOS

Режим Cluster-on-Die, используемый для процессоров Intel Xeon E5 v3 с десятью и более ядрами, логически разделяет каждый процессор на два NUMA-узла, называемых кластерами.

Заметим, что NUMA-иерархия в приложении Haswell-EP к стала двухуровневой: нижний уровень – кластеры, верхний уровень – процессорные сокеты (гнезда). Каждому сокету теперь есть возможность назначить два NUMA-узла. Из этого следует, что параметр, характеризующий расстояние между узлами в мультипроцессорной NUMA-системе, может принимать более двух значений (не только локальный или удаленный узел).

Декларирование кластеров, также как и декларирование топологии мультипроцессорных NUMA-систем с целью передачи информации от UEFI BIOS платформы к операционной системе и оптимизации использования локальных ресурсов кластера, осуществляется посредством ACPI-таблицы SRAT (System Resource Affinity Table, или, по другой версии Static Resource Affinity Table). Для описания двухуровневой NUMA-системы потребуется еще одна ACPI-таблица SLIT (System Locality Distance Information Table). Эта таблица содержит матрицу размерностью N x N, где N = количество NUMA-узлов. Элементы матрицы Xij содержат константы, численно характеризующие расстояние между узлами i, j.

Практическая надстройка

Для того чтобы изучить влияние установок BIOS на производительность сервера, компания Dell использовала платформу PowerEdge R730xd с 14-ядерными процессорами  Intel Xeon E5-2697 v3 частотой 2,60 ГГц. Прежде, чем приступить к рассмотрению результатов тестов отметим, что их значения ниже теоретических, которые мы обсуждали в статье «DDR4 в серверах: чего ждать?»:

Бенчмарки Dell, полученные с помощью пакета программного обеспечения Stream Triad на платформе с процессорами Intel Xeon E5-2697 v3 частотой 2,60 ГГц

Бенчмарки Dell получены с помощью пакета программного обеспечения Stream Triad. Наилучший результат достигается при обмене данными с ОЗУ, в котором были задействованы оба процессора. Его значение 116 ГБ/сек немногим уступает гипотетически возможному 136 ГБ/сек. Сведем сравнение всех полученных результатов в таблицу:

Топология Теоретически Практически  
два сокета, 8 каналов памяти 136 ГБ/сек 116 ГБ/сек  
один сокет, 4 канала памяти 68 ГБ/сек 58 ГБ/сек  
один кластер, 2 канала памяти 34 ГБ/сек 28 ГБ/сек Cluster-on-Die включен
доступ к ОЗУ соседнего кластера 17 ГБ/сек [1] 15 ГБ/сек  
доступ к ОЗУ соседнего сокета 17 ГБ/сек [1] 13 ГБ/сек  

Примечание [1]. В качестве теоретического для сравнения приводится пропускная способность одного канала оперативной памяти, вычисляемая как произведение тактовой частоты передачи данных 2133 MГц и разрядности шины данных модуля DIMM, без учета ECC (это 8 байт = 64 бита): 2133 * 8 = 17064 , что составляет чуть более, чем 17 ГБ/сек.

Режим Full System (два сокета, 8 каналов памяти) предполагает выполнение в мультипроцессорной системе ресурсоемкого приложения, способного загрузить работой логические процессоры, входящие в состав всех ядер двух физических процессоров (сокетов). При этом подразумевается, что приложение оптимизировано в соответствии с топологией платформы и каждый программный поток использует диапазон адресов, относящийся к контроллеру памяти, схемотехнически ближайшему к логическому процессору, выполняющему этот поток.

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

Режим Local NUMA Node (один кластер) также предполагает NUMA-оптимизированное приложение, но выполняемое одним кластером, то есть половиной физического процессора, что означает использование только одного двухканального контроллера памяти, ближайшего к данному кластеру.

В режиме Remote to same Socket (доступ к ОЗУ соседнего кластера) тестовое приложение, вместо ближайшего контроллера памяти, намеренно использует контроллер соседнего кластера того же физического сокета, для того, чтобы оценить падение производительности, имеющее место в этом случае.

В режиме Remote to other Socket (доступ к ОЗУ соседнего сокета) тестовое приложение намеренно создает наихудший случай, используя контроллер памяти другого физического сокета. В этом случае логические процессоры выполняющие обращение к памяти и адресуемый блок памяти физически относятся к разным сокетам.

Полезные выводы

Распределенные вычисления, замкнутые в кольце процессорного кластера, выполняются более эффективно, если организована сегрегация пространства оперативной памяти. Как показывает эксперимент Dell, доступ к локальной области ОЗУ на 47% быстрее по сравнению с операциями с памятью, выделенной соседнему кластеру. Чтение и запись данных, расположенных в массиве RAM, подключенном к соседнему сокету (гнезду) выполняются еще медленнее – на 58%.

Оптимально ли значение 10 ядер для запуска Cluster-on-Die топологии? Ответ на этот вопрос остается открытым в силу того, что подтвердить или опровергнуть его можно эмпирическим путем. А вся информация по данному вопросу дозировано исходит только от компании Intel.

Существенный прирост производительности COD-технология может обеспечить, когда выполнение гостевых задач виртуализации поручено выделенным процессорным кластерам. Логическое распределение вычислений в таком случае поддерживается и на аппаратном уровне.