
Самое интересное в процессорах семейства 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, используемый для процессоров 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. Наилучший результат достигается при обмене данными с ОЗУ, в котором были задействованы оба процессора. Его значение 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-технология может обеспечить, когда выполнение гостевых задач виртуализации поручено выделенным процессорным кластерам. Логическое распределение вычислений в таком случае поддерживается и на аппаратном уровне.
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии