По материалпм статьи: SQL 2016 – It Just Runs Faster: Automatic Soft NUMA
30 марта 2016
Автор: Nitin Verma – Principal SQL Server Developer, Bob Dorr – Principal SQL Server Escalation Engineer
Мощности серверного оборудования растут из года в год, что обусловлено многолетним развитием технологий изготовления процессоров. Анализируя результаты наших исследований того, как работает SQL Server на современном оборудовании, и как наши клиенты достигают оптимального для себя масштабирования вычислительных ресурсов, мы выдвинули на передний план дальнейшего развития сервера баз данных необходимость улучшения возможностей секционирования обслуживания нагрузки. В настоящее время, именно основанный на секционировании дизайн является самым распространённым способом локализации обслуживания нагрузки и улучшения производительности и масштабируемости. Примером того, как SQL Server использует секционирование нагрузки является объект CMemThread.
Для защиты потока используются несколько механизмов синхронизации (spinlock, latch, mutex, semaphore…). Чтобы не «распыляться» давайте сосредоточимся на спин-блокировке, в использовании которой компьютерная индустрия накопила огромный опыт. Говоря кратко о сути проблемы, конкурирующий спинлок не может масштабироваться больше чем на 8 процессоров. Если процессор загружен и N-1 спин не может получить блокировку, это сможет сделать только владелец потока.
Специалисты продуктовой группы SQL Server исследовали код ядра сервера и выявили все места использования объектов CMemThread во внутренних структурах и используемых ими схемах секционирования. Большинство наиболее востребованных внутренних структур SQL Server были разработаны с использованием разных схем секционирования, которые обычно привязывались к NUMA схеме аппаратной платформы севера.
Секционирование на основе аппаратной NUMA эволюционировало от SQL Server 2000 x64 к SQL Server 2005 и новейшим версиям. Поскольку SMP-системы, имеющие один аппаратный узел, со временем получили более 8 процессоров, масштабирование стало проблемой, и потребовалось внести ряд конструктивных изменений для её решения. Для повышения масштабируемости очевидным выбором было использование секционирования по NUMA узлам. Во времена SQL Server 2000 и разработки SQL Server 2005 наличие в NUMA узле 8 процессоров было характерно для систем высшего класса. Сегодняшние аппаратные средства достигают более 18 ядер на одном узле NUMA, и работают в рамках одного узла как SMP система.
Для разделения физического узла на несколько логических узлов (секций) можно использовать механизм Soft NUMA. В этом случае, SQL Server будет использовать новую схему узлов Soft NUMA, и по этой схеме будут строиться его внутренние схемы секционирования. Именно это становится решающим для оптимизации производительности и расширения возможностей масштабирования. На новых серверах, где в NUMA узлах много ядер, Microsoft рекомендует использовать Soft NUMA, и этим вы сразу же сможете повысить производительность сервера баз данных.
На системах, у которых в одном NUMA узле 8 и более процессоров, SQL Server 2016 во время запуска запрашивает топологию аппаратных компонент сервера и автоматически настраивает Soft NUMA. Такое секционирование ресурсов приводит к множеству настроек на уровне ядра базы данных, которые призваны повысить масштабируемость и производительность сервера. Логика автоматического Soft NUMA учитывает число привязанных к экземпляру логических процессоров, полное число процессоров и ряд других факторов, и пытается на основание этой информации создать логические Soft-узлы, содержащие по 8 или меньше процессоров в каждом.
- SQL Error log: Автоматическая настройка soft-NUMA была выполнена, так как SQL Server обнаружил аппаратные узлы NUMA с более чем 8 логическими процессорами.
- DMV: в sys.dm_os_sys_info колонка softnuma_configuration_desc может иметь одно из трех значений: OFF / ON / MANUAL
Выгода для вас от включённого soft-NUMA может варьироваться, но, вот что сообщают инженеры по тестированию SQL Server 2016: “С включённым HT и автоматической soft-NUMA, мы получаем прирост производительности до 30%. Этот результат был получен для запросов с DOP установленным равным количеству физических ядер на сокете (12 в конкретном случае)”.
Логика автоматической soft NUMA учитывает использование технологии HyperThread (HT/ логический процессор). При определении оптимальной компоновки узла запрашивается информация о логических процессорах и потом она используется для предотвращения неправильной группировки логических и физических процессоров, которая может привести к потерям производительности на узлах.
Кроме того, на каждом узле создаются несколько фоновых процессов. Секционирование, приводящее к созданию дополнительных узлов, масштабирует фоновые задачи. Например, каждый узел содержит воркера для прослушивания сетевой активности, а также для работ по шифрованию. Дополнительные узлы, созданные с помощью настройки soft-NUMA, увеличивают количество прослушивателей, что увеличивает возможности масштабирования, сети и шифрования.
«Это просто работает быстрее» – Переходите на SQL Server 2016, внутренние структуры которого используют секционирование на основе soft-NUMA, и это позволит получить прирост производительности, который составит двузначное число.
No comments
Comments feed for this article
Trackback link: https://blogs.msmvps.com/gladchenko/sql-2016-it-just-runs-faster-automatic-soft-numa/trackback/