Сервис numad. Как мы увеличили производительность серверов на 10–20%, а в некоторых случаях и на все 50%

Сервис numad. Как мы увеличили производительность серверов на 10–20%, а в некоторых случаях и на все 50%

Timeweb Cloud

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

В мультипроцессорных системах с этим все сложнее. Чтобы заставить все это слаженно работать, используется архитектура NUMA или Non-Uniform Memory Access.

Как выглядит архитектура NUMA

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

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

Как было: без сервиса numad

Процессор 1 может использовать NUMA-ноду процессора 2, и наоборот. Каждое такое взаимодействие требует прохождения данных через мост, который соединяет обе NUMA-ноды.

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

Как стало: когда подключили numad

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

Какие результаты получили

Мы провели тесты новой архитектуры и подтвердили прирост производительности на самых разных серверах. Например, на сервере с базой данных Redis прирост составил от 4% до 22%. А на сервере с «1С-Битрикс: Управление сайтом малый бизнес» — аж до 50%.

Отлично, готов заказать у вас сервер ➔

Report Page