Mini-ats102.ru

ООО “Мультилайн”
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Устраняем неравномерную загрузку и повышаем производительность кластера «1С» на многопроцессорных системах

Устраняем неравномерную загрузку и повышаем производительность кластера «1С» на многопроцессорных системах

У одного из наших клиентов на новых и мощных серверах кластер «1С:Предприятия» демонстрировал низкую производительность, время ожидания пользователей при выполнении рабочих операций превышало все разумные пределы. Быстрый анализ показал периодический дисбаланс нагрузки между физическими процессорами — в отдельные моменты один мог быть загружен на 100 %, второй на 5–10 %. В статье рассказываем, как локализовали и решили эту проблему.

Про ранги и виртуализацию в RAM

В продолжение рубрики «конспект админа» хотелось бы разобраться в нюансах технологий ОЗУ современного железа: в регистровой памяти, рангах, банках памяти и прочем. Подробнее коснемся надежности хранения данных в памяти и тех технологий, которые несчетное число раз на дню избавляют администраторов от печалей BSOD.

Старые песни про новые типы

Сегодня на рынке представлены, в основном, модули с памятью DDR SDRAM: DDR2, DDR3, DDR4. Разные поколения отличаются между собой рядом характеристик — в целом, каждое следующее поколение «быстрее, выше, сильнее», а для любознательных вот табличка:

image alt text

Для подбора правильной памяти больший интерес представляют сами модули:

RDIMM — регистровая (буферизованная) память. Удобна для установки большого объема оперативной памяти по сравнению с небуферизованными модулями. Из минусов — более низкая производительность;

UDIMM (unregistered DRAM) — нерегистровая или небуферизованная память — это оперативная память, которая не содержит никаких буферов или регистров;

LRDIMM — эти модули обеспечивают более высокие скорости при большей емкости по сравнению с двухранговыми или четырехранговыми модулями RDIMM, за счёт использования дополнительных микросхем буфера памяти;

HDIMM (HyperCloud DIMM, HCDIMM) — модули с виртуальными рангами, которые имеют большую плотность и обеспечивают более высокую скорость работы. Например, 4 физических ранга в таких модулях могут быть представлены для контроллера как 2 виртуальных;

FBDIMM — полностью буферизованная DIMM с высокой надежностью, скоростью и плотностью размещения.

Попытка одновременно использовать эти типы может вызвать самые разные печальные последствия, вплоть до порчи материнской платы или самой памяти. Но возможно использование одного типа модулей с разными характеристиками, так как они обратно совместимы по тактовой частоте. Правда, итоговая частота работы подсистемы памяти будет ограничена возможностями самого медленного модуля или контроллера памяти.

Для всех типов памяти SDRAM есть общий набор базовых характеристик, влияющий на объем и производительность:

частота и режим работы;

Конечно, отличий на самом деле больше, но для сборки правильно работающей системы можно ограничиться этими.

Частота и режим работы

Понятно, что чем выше частота — тем выше общая производительность памяти. Но память все равно не будет работать быстрее, чем ей позволяет контроллер на материнской плате. Кроме того, все современные модули умеют работать в в многоканальном режиме, который увеличивает общую производительность до четырех раз.

Режимы работы можно условно разделить на четыре группы:

Single Mode — одноканальный или ассиметричный. Включается, когда в системе установлен только один модуль памяти или все модули отличаются друг от друга. Фактически, означает отсутствие многоканального доступа;

Dual Mode — двухканальный или симметричный. Слоты памяти группируются по каналам, в каждом из которых устанавливается одинаковый объем памяти. Это позволяет увеличить скорость работы на 5-10% в играх, и до 70% в тяжелых графических приложениях. Модули памяти необходимо устанавливать парами на разные каналы. Производители материнских плат обычно выделяют парные слоты одним цветом;

Triple Mode — трехканальный режим работы. Модули устанавливаются группами по три штуки — на каждый из трех каналов. Аналогично работают и последующие режимы: четырехканальные (quad-channel), восьмиканальные (8-channel memory) и т.п.

Читайте так же:
Лучшие ноутбуки до 30000 рублей рейтинг 2018

Flex Mode — позволяет увеличить производительность оперативной памяти при установке двух модулей различного объема, но с одинаковой частотой.

Для максимального быстродействия лучше устанавливать одинаковые модули с максимально возможной для системы частотой. При этом используйте установку парами или группами — в зависимости от доступного многоканального режима работы.

Ранги для памяти

Ранг (rank) — область памяти из нескольких чипов памяти в 64 бита (72 бита при наличии ECC, о чем поговорим позже). В зависимости от конструкции модуль может содержать один, два или четыре ранга.

Узнать этот параметр можно из маркировки на модуле памяти. Например уKingston число рангов легко вычислить по одной из трех букв в середине маркировки: S (Single — одногоранговая), D (Dual — двухранговая), Q (Quad — четырехранговая).

Пример полной расшифровки маркировки на модулях Kingston:

image alt text

Серверные материнские платы ограничены суммарным числом рангов памяти, с которыми могут работать. Например, если максимально может быть установлено восемь рангов при уже установленных четырех двухранговых модулях, то в свободные слоты память добавить не получится.

Перед покупкой модулей есть смысл уточнить, какие типы памяти поддерживает процессор сервера. Например, Xeon E5/E5 v2 поддерживают одно-, двух- и четырехранговые регистровые модули DIMM (RDIMM), LRDIMM и не буферизированные ECC DIMM (ECC UDIMM) DDR3. А процессоры Xeon E5 v3 поддерживают одно- и двухранговые регистровые модули DIMM, а также LRDIMM DDR4.

Немного про скучные аббревиатуры таймингов

Тайминги или латентность памяти (CAS Latency, CL) — величина задержки в тактах от поступления команды до ее исполнения. Числа таймингов указывают параметры следующих операций:

CL (CAS Latency) — время, которое проходит между запросом процессора некоторых данных из памяти и моментом выдачи этих данных памятью;

tRCD (задержка от RAS до CAS) — время, которое должно пройти с момента обращения к строке матрицы (RAS) до обращения к столбцу матрицы (CAS) с нужными данными;

tRP (RAS Precharge) — интервал от закрытия доступа к одной строке матрицы, и до начала доступа к другой;

tRAS — пауза для возврата памяти в состояние ожидания следующего запроса;

CMD (Command Rate) — время от активации чипа памяти до обращения к ней с первой командой.

Разумеется, чем меньше тайминги — тем лучше для скорости. Но за низкую латентность придется заплатить тактовой частотой: чем ниже тайминги, тем меньше допустимая для памяти тактовая частота. Поэтому правильным выбором будет «золотая середина».

Существуют и специальные более дорогие модули с пометкой «Low Latency», которые могут работать на более высокой частоте при низких таймингах. При расширении памяти желательно подбирать модули с таймингами, аналогичными уже установленным.

RAID для оперативной памяти

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

Для коррекции нерегулярных ошибок применяется ECC-память, которая содержит дополнительную микросхему для обнаружения и исправления ошибок в отдельных битах.

Метод коррекции ошибок работает следующим образом:

При записи 64 бит данных в ячейку памяти происходит подсчет контрольной суммы, составляющей 8 бит.

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

Если ошибка однобитовая, то неправильный бит исправляется автоматически. Если двухбитовая — передается соответствующее сообщение для операционной системы.

Технология Advanced ECC способна исправлять многобитовые ошибки в одной микросхеме, и с ней возможно восстановление данных даже при отказе всего модуля DRAM.

Читайте так же:
Лучшие компьютеры для видеомонтажа

image alt text

Исправление ошибок нужно отдельно включить в BIOS

Большинство серверных модулей памяти являются регистровыми (буферизованными) — они содержат регистры контроля передачи данных.

Регистры также позволяют устанавливать большие объемы памяти, но из-за них образуются дополнительные задержки в работе. Дело в том, что каждое чтение и запись буферизуются в регистре на один такт, прежде чем попадут с шины памяти в чип DRAM, поэтому регистровая память оказывается медленнее не регистровой на один такт.

image alt text

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

Многопроцессорные системы и память

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

Если пришлось поставить в сервер модули с меньшей частотой, чем требуется материнской плате — нужно включить в BIOS дополнительные циклы ожидания при работе процессора с памятью.

Для автоматического учета всех правил и рекомендаций по установке модулей можно использовать специальные утилиты от вендора. Например, у HP есть Online DDR4 (DDR3) Memory Configuration Tool.

Итого

Вместо пространственного заключения приведу общие рекомендации по выбору памяти:

Для многопроцессорных серверов HP рекомендуется использовать только регистровую память c функцией коррекции ошибок (ECC RDIMM), а для однопроцессорных — небуферизированную с ECC (UDIMM). Планки UDIMM для серверов HP лучше выбирать от этого же производителя, чтобы избежать самопроизвольных перезагрузок.

В случае с RDIMM лучше выбирать одно- и двухранговые модули (1rx4, 2rx4). Для оптимальной производительности используйте двухранговые модули памяти в конфигурациях 1 или 2 DIMM на канал. Создание конфигурации из 3 DIMM с установкой модулей в третий банк памяти значительно снижает производительность.

Из тех же соображений максимальной скорости желательно избегать использования четырехранговой памяти RDIMM, поскольку она снижает частоту до 1066 МГц в конфигурациях с одним модулем на канал, и до 800 МГц — в конфигурациях с двумя модулями на канал. Справедливо для серверов на базе Intel Xeon 5600 и Xeon E5/E5 v2.

Список короткий, но здесь все самое необходимое и наименее очевидное. Конечно же, старый как мир принцип RTFM никто не отменял.

Главная проблема технической инфраструктуры — компактность. Да, появление многопроцессорных систем обусловлено именно тем, что нужно максимально плотно сформировать IT- структуры организации.

Площади центров обработки данных исчисляются порой десятками тысяч квадратных метров. А теперь представьте в какую сумму обходится содержание такой территории. Если под каждый процессор выделять отдельное устройство, то придётся использовать намного больше техники, что повлечёт за собой необходимость использовать больше помещений.

Выльется это, конечно же, в дополнительные расходы и подорожание услуг. Потому можно смело сказать, что многопроцессорные серверы нужны для сокращения издержек.

Например, компания safedec.ru давно занимается поставками серверов с 2-мя и 4-мя процессорами. На удивление потребителями подобных устройств являются вполне обычные компании, а не крупные ЦОД, где применение подобных устройств может показаться целесообразным.

Dell PowerEdge R740

Сервер Dell PowerEdge R740, в который можно установить до 2-х процессоров Intel Xeon Scalable

Назначение многопроцессорных серверов

Как ни удивительно, но даже малый и средний бизнес нуждается в мульти процессорных системах, потому основные потребители даже не ЦОД, а обыкновенные компании. Посмотрите практически на любой бизнес. Какие компоненты должны в н ё м хорошо функционировать?

Читайте так же:
Магазин плей маркет на компьютер

Выделение сотрудникам технических ресурсов для выполнения работы.

Использование приложений для аналитики, бухгалтерии и ведения уч ё та.

Общая файловая база, а также сервисы для взаимодействия сотрудников, например, корпоративные чаты.

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

Supermicro H8QGi-LN4F

Серверная материнская плата Supermicro H8QGi-LN4F для 4-процессорных систем

Давайте посмотрим на самые наглядные примеры.

Терминальный сервер

Терминальный сервер

Фактически вариант предназначается для создания гостевых рабочих столов. Если руководство желает сократить численность техники и упростить администрирование, то закупаются серверы, на каждом созда ё тся от несколько до парочки десятков гостевых уч ё тных записей и посредством тонкого клиента к устройству да ё тся доступ.

В пределах этого блога писал подробнее о терминальных серверах. Но вкратце технологию обрисую.

На одном устройстве устанавливается операционная система. Для каждого сотрудника на сервере создается уч ё тная запись.

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

Тонкий клиент

Так выглядит тонкий клиент

Толстый клиент имеет некоторые вычислительные мощности и способен решать часть задач за сч ё т собственных ресурсов, но операционная система вс ё равно находится на сервере.

Такой подход упрощает администрирование и управление технической инфраструктурой. Например, сервер для 1С, который довольно часто покупают у компании Safedec, является распростран ё нным примером терминального сервера.

Фактически всем, кто взаимодействует с программным обеспечением, да ё тся удал ё нный доступ. Все вычисления производятся на самом устройстве.

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

Потому ставится несколько процессоров на одну материнскую плату, а их мощность распределяется между сотрудниками в зависимости от потребностей.

Терминальная структура IT позволяет экономить на технике, ибо вместо покупк и большого количества мощных ПК можно взять несколько мощных серверов, что закроет потребности офиса. Особенно полезно, если высокая производительность нужна не постоянно, а эпизодически.

Виртуализация

Виртуализация

В центрах обработки данных на виртуализации построено практически вс ё . Но даже обычные компании перенимают сей опыт. Особенно IT. Про виртуализацию также рассказывал в пределах данного блога.

Суть проста. На одном устройстве можно создать несколько виртуальных машин, полностью имитирующих физические устройства.

Например, бер ё тся один мощный сервер, а на его основе создается десяток более слабых ВМ. Тут количество ядер играет серь ё зную роль. Часть мощности уходит на обслуживание гипервизора (специальное ПО для формирования виртуальных машин), а другие части распределяются между виртуальными серверами.

К примеру, есть у нас устройство с двумя процессорами по 16 ядер и 256 гигабайтами оперативной памяти, а также пара терабайт дисковой памяти.

На базе такого устройства можно создать 7 виртуальных машин, имитирующих 4-ядерные ПК, каждая из которых будет иметь по 32 ГБ ОЗУ, а также по 250 ГБ дисковой памяти. Учтите, часть ресурсов я оставил для нормальной работы гипервизора и резервного развёрстки другой ВМ в случае необходимости.

Каждая из машин будет полностью имитировать полноценное физическое устройство. Их среды будут изолированы друг от друга. А закрывает сии потребности не 8 ПК, а один сервер.

Читайте так же:
Лучший игровой ноутбук до 40000

А ещ ё …

… можно использовать многопроцессорные системы для обработки баз данных, два процессора смогут обрабатывать разные блоки БД, что значительно увеличивает скорость. В общем, сфер применения многопроцессорных систем очень много.

Но главная задача — сделать инфраструктуру компактнее, сократить количество единиц техники, что позволяет легче администрировать и обслуживать зоопарк из оборудования. Так что найти себя многопроцессорные серверы могут во многих сферах деятельности.

Многопроцессорные системы с общей памятью

video-placeholder

Национальный исследовательский Томский государственный университет

Количество зарегистрированных учащихся: 6.3 тыс.

Потребность решения сложных прикладных задач с большим объемом вычислений и принципиальная ограниченность максимального быстродействия «классических» – по схеме фон Неймана – ЭВМ привели к появлению многопроцессорных вычислительных систем (МВС) или суперкомпьютеров. Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства – от карманных гаджетов и до самых мощных суперкомпьютеров – оснащены многоядерными процессорами. И если вы пишите последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора. Пройдя этот курс, вы познакомитесь с основными архитектурами МВС, с двумя стандартами (OpenMP и MPI), позволяющими писать параллельные программы для систем с общей и распределенной памятью. На простых примерах будут разобраны основные конструкции и способы распределения работы. Выполнение практических заданий позволит вам приобрести практические навыки создания параллельных программ. Курс будет интересен всем, кто занимается программированием. Для участия в курсе слушателю необходимо иметь базовые знания по программированию с использованием С/С++. Курс состоит из 9 недель. Каждая неделя курса содержит видеолекции, а также проверочные задания. Сертификат получают слушатели, набравшие более 80 % от максимально возможного количества баллов. При этом итоговый результат, представленный как 100 %, складывается из следующих составляющих: тесты 1–5 недели дают 4 %, тесты 6–9 недели дают 5 %, все практические задания дают 10 %, кроме итогового практического задания по OpenMP, которое дает 20 %. Сертификат о прохождении данного курса дает дополнительные баллы при поступлении в магистратуру Национального исследовательского Томского государственного университета. Перечень магистерских программ находится по ссылке: https://pro-online.tsu.ru/edu/student/table.php

Рецензии

Введение в параллельный мир

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

Преподаватели

Placeholder

Николай Николаевич Богословский (Nikolay N. Bogoslovskiy)

Кандидат физико-математических наук, доцент (Сandidate of Physics and Mathematics, Associate Professor)

Placeholder

Евгений Александрович Данилкин (Evgeniy A. Danilkin)

Кандидат физико-математических наук, доцент (Сandidate of Physics and Mathematics, Associate Professor)

Сравнение с микросхемой девятилетней давности

Модуль Nvidia Jetson Xavier, упомянутый в документации к тендеру Минпромторга, был анонсирован еще 28 сентября 2016 г. Другими словами, к моменту выполнения подрядчиком пятого этапа контракта по созданию его российского конкурента Jetson Xavier успеет отметить свое девятилетие.

Nvidia Jetson Xavier выпускается с марта 2019 г. по 12-нанометровому техпроцессу и имеет в своем распоряжении восемь вычислительных ядер (CPU) и видеоподсистему с 512 ядрами CUDA, производительность которой достигает 1,4 ТФЛОПС.

modul601.jpg

В максимальной комплектации компьютер поставляется с 32 ГБ оперативной памяти LPDDR4X и такого же объема флеш-накопителем на базе модуля eMMC 5.1. Согласно описанию на русскоязычной версии сайта Nvidia, компьютер дает возможность «разворачивать готовые робототехнические приложения на базе искусственного интеллекта для производства, доставки, розничной торговли, умных городов и других областей». В России один такой модуль оценивается приблизительно в 72 тыс. руб.

Читайте так же:
Интел кор ай 5 3570

Пока неизвестно, планирует ли Nvidia к 2025 г. выпустить более современный аналог конкурента Jetson Xavier.

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

Материнская плата с двумя процессорамиДвухпроцессорная материнская плата

Материнская плата с двумя процессорами позволит вам использовать два процессора одновременно, что очевидно. Но что обеспечивают два процессора, чего не может один?

Это дает вам большее количество ядер, что выдает лучшую многозадачность и большую общую вычислительную мощность. Он также обеспечивает большую пропускную способность PCIe и памяти.

Эти материнские платы включают в себя дополнительные слоты PCIe и RAM, что позволяет устанавливать больше плат расширения и увеличивать максимальный объем оперативной памяти до 256 ГБ.

Общая память

Синхронизация доступа к данным — одна из первых вещей, с которыми столкнется человек, берущийся за многопоточное программирование в низкоуровневых языках. Скажем, C вообще не имеет встроенных примитивов для синхронизации доступа, и вам как минимум потребуется использовать POSIX Semaphores или написать свое решение. В Java есть уже некоторые полезные штуки, но вам все равно придется сперва разобраться в том, как они работают.

А сама проблема заключается в том, что в большинстве языков с неизолированными потоками два потока могут читать или писать в одну переменную, никого о том не предупреждая. Если не разруливать такие ситуации, можно легко получить неопределенное поведение программы.

Для решения этой проблемы применяют блокировки, неблокирующий доступ (CAS) и некоторые особенности конкретных языков.

Блокировки
Блокировки работают очень просто: прежде чем писать в переменную, поток должен захватить семафор. Остальные потоки будут вынуждены ждать, пока семафор не освободится, и лишь потом один из других потоков снова захватит семафор, и так далее. Разумеется, это медленно работает, а также намертво блокирует ожидающие потоки. Кроме того, можно прекрасным образом написать код с взаимными блокировками.

Краевой случай семафора — мьютекс, максимально упрощенный семафор. Главное в нем то, что только один поток в один момент времени может владеть мьютексом. Операционные системы часто имеют свои высокопроизводительные реализации мьютексов — фьютексы в Linux, FAST_MUTEX в Windows. Кроме того, в различных языках есть свои специализированные реализации мьютексов для особых задач.

Не-блокировки
Чтобы избежать части проблем, придумали неблокирующие реализации синхронизации. Одна из них — CAS, compare and set. Я оставлю ссылку, чтобы вы могли почитать о том, как это работает: https://ru.wikipedia.org/wiki/Сравнение_с_обменом. И вот еще вам небольшая презентация: slideshare.net/23derevo/nonblocking-synchronization

Наконец, есть еще один железобетонный способ избежать проблем с синхронизацией: давайте просто запретим потокам писать в общую память. Пусть у каждого потока будет своя куча, где он будет хранить свои данные, а если нужно обменяться информацией — пусть шлет сообщение другому потоку. Такая модель реализована в Go и Erlang, например.

Haskell первым реализовал еще один подход к проблеме синхронизации — STM, software transactional memory. По сути, это реализация транзакционного чтения-записи в общую память, аналогично тому, как устроены транзакции в базах данных. Подробнее можно почитать тут: https://ru.wikipedia.org/wiki/Программная_транзакционная_память

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector