Сегодня мы представляем новую конфигурацию выделенных серверов: Intel Xeon E3-1270v3, 32GB RAM, 2x240GB SSD. За этими краткими цифрами стоят действительно широкие возможности. Рассмотрим их более подробно.
В новой конфигурации используется новейшая разработка Intel — процессор Xeon E3 на базе архитектуры Haswell. Процессоры семейства Haswell выпускаются по 22-нанометровому технологическому процессу с использованием трехмерных транзисторов (технология Tri-Gate).
Из нововведений следует назвать, во-первых, поддержку наборов инструкций AVX2 и FMA3, благодаря которым операции сложения и умножения процессор может выполнять в рамках одного такта. В теории это приводит к существенному увеличению производительности. Чтобы задействовать эти инструкции, нужно обновить или по крайней мере перекомпилировать код.
Во-вторых, процессоры Haswell характеризуются также расширенной полосой пропускания к L1- и L2-кэшу, что может существенно ускорить доступ к данным и, следовательно, выполнение приложений.
В-третьих, в новых процессорах реализована аппаратная поддержка транзакционной памяти. Многие специалисты называют это нововведение самым нетривиальным расширением архитектуры x86 за последние годы, и о нем стоит рассказать отдельно.
Транзакционная память
Все программы имеют изменяемые области памяти, в которых хранятся их данные. Если с этими данными работают несколько потоков управления, то работа должна быть организована так, чтобы не возникало проблем с параллельным доступом (таких, например, как чтение области памяти, которая параллельно записывается из другого потока, или запись из двух потоков одновременно).
В большинстве многопоточных приложений для предупреждения этих проблем используется синхронизация на основе блокировки. Перед любым доступом к данным на них должна быть установлена блокировка. Пока один поток осуществляет модификацию данных, другие потоки ждут, когда эта блокировка будет снята. Чтобы обеспечить параллельную работу нескольких потоков, нужно для каждой более или менее зависимой части данных программы устанавливать блокировку. Реализовать это на практике, однако, очень трудно.
Альтернативой синхронизации на основе блокировки является использование транзакционной памяти. Методы транзакционной памяти работают по следующей схеме: поток завершает изменения разделяемой памяти без учета того, что делают другие потоки, и регистрирует в log-файле любое считывание или запись. После завершения полной операции считывающее устройство проверяет, не произвели ли другие потоки изменения в памяти, к которой был получен доступ ранее. Если транзакция не может быть завершена из-за конфликтов изменений, она прерывается и выполняется повторно до тех пор, пока результативно не завершится. Преимущества такого подхода очевидны: ни одному потоку не нужно ожидать получения доступа к ресурсу, и различные потоки могут одновременно модифицировать непересекающиеся структуры данных, которые были бы защищены блокировкой.
До недавнего времени поддержка транзакционной памяти могла быть реализована лишь программно. Программная поддержка транзакционной памяти является очень сложной и трудоемкой задачей, которая под силу далеко не каждому программисту. Новое расширение архитектуры x86 позволяет решить многие проблемы на аппаратном уровне и является несомненным шагом вперед.
Поддержка транзакционной памяти в процессорах Haswell реализована с помощью набора инструкций TSX (Transactional Synchronization Extensions), в состав которого входят два механизма: HLE (Hardware Lock Elision) и RTM (Restricted Transactional Memory).
Механизм HLE позволяет добиться улучшения производительности многопоточных приложений с блокировками. В нем используются префиксы XACQUIRE и XRELEASE. Если префикс XACQUIRE размещен перед инструкцией, предписывающей выполнить заблокированную атомарную операцию, то блокировка снимается. Префикс XRELEASE, размещенный перед такой же инструкцией, возвращает процессор в “обычный” режим работы, включая блокировку повторно. Конечно, выполнение атомарных операций без блокировки чревато ошибками. Управляющая логика следит за возникновением проблемных ситуаций: вызвавшая ошибку секция кода будет выполнена повторно, но уже с включенной блокировкой.
В механизме RTM используются префиксы XBEGIN, XEND и XABORT. Инструкция XBEGIN сообщает процессору о начале выполнении секции кода, работающей с регионами памяти, к которым обращаются незаблокированные программные потоки. Все ошибки выявляются аппаратно, и управление передаются процессу по адресу, указанному в инструкции. Процессор автоматически возвращается в состояние, в котором он находился в момент начала выполнения инструкции XBEGIN. Инструкция XEND информирует о завершении выполнения секции кода, работавшей с транзакционной памятью. Если ошибка обнаружена программно, то инструкция XABORT явно инициирует процедуру обработки этой ошибки.
ТSX уже поддерживается в GCC v4.8, последней версии Microsoft Visual Studio 2012, последней версии компилятора С++ от Intel, а также в библиотеке Glibc v2.18, широко используемой linux-приложениями. TSX позволяет обеспечить хорошее масштабирование многоядерных процессоров без детальной настройки блокировок. Программисту даже не нужно модифицировать программный код: достаточно лишь подключить соответствующую библиотеку или перекомпилировать код.
Больше возможностей
Новая конфигурация отлично подходит для серверов хранения данных с интенсивной работой с дисковой подсистемой. Каждый сервер оснащен двумя твердотельными накопителями (SSD) емкостью 240Гб. Современные твердотельные накопители отличаются малым временем доступа, а также высокой скоростью операций чтения-записи. Они могут быть использованы для размещения больших баз данных и кэширования «горячих» данных веб-хранилищ.
Серверы новой конфигурации укомплектованы 32Гб оперативной памяти. Этого объема достаточно для использования достаточно больших in-memory базы данных, таких как Redis, Memcached или Couchbase (они размещают данные непосредственно в оперативной памяти и периодически сохраняют состояние БД на диск). При этом и классические БД получат прирост производительности за счет интенсивного кэширования запросов в памяти.
Уже хочу!
Новые серверы уже доступны для заказа в Москве и Санкт-Петербурге. Стоимость аренды составляет всего 7 500 рублей в месяц.
Для тех кто не может комментировать посты на Хабре, приглашаем к нам в блог.
P.S.
Благодаря новому графическому ядру серверы на базе процессоров Haswell отлично справляются с задачей перекодирования видео “на лету” и могут быть использованы, например, в качестве аппаратных платформ для видео- трансляций и
Процессор Intel Xeon E3-1270v3, используемый в новой конфигурации, не имеет встроенного графического ядра. Если в вашей работе существуют задачи, для решения которых вам может пригодиться графическое ядро процессора семейства Haswell, то мы готовы предоставить вам на месяц платформу с процессором E3-1285v3. Взамен мы попросим вас предоставить отчет о проведенном тестировании, которым мы поделимся со всеми в нашем блоге. Оставить заявку с кратким планом теста вы можете через нашу тикет-систему.
Автор: fortyseven