Сервис 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%.