Основные сведения о неоднородном доступе к памяти

Microsoft SQL Server совместим с архитектурой неоднородного доступа к памяти (NUMA) и хорошо работает на оборудовании NUMA без дополнительной настройки. С ростом тактовой частоты и количества процессоров становится труднее сократить время задержки памяти, необходимой для использования дополнительной производительности системы. Для устранения этого недостатка поставщики оборудования применяют большие кэши третьего уровня, но это является всего лишь полумерой. Архитектура NUMA обеспечивает масштабируемое решение этой проблемы. SQL Server позволяет использовать преимущество компьютеров на основе NUMA без необходимости каких-либо изменений в приложении.

Основные понятия NUMA

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

На оборудовании NUMA некоторые области памяти физически находятся на шинах, отличных от шин остальных областей. Поскольку NUMA использует локальную и удаленную память, доступ к одним областям производится дольше, чем к другим. Термины локальная память и удаленная память, как правило, употребляются относительно текущего выполняемого потока. Локальная память — это память, которая находится на том же узле, что и ЦП, выполняющий в настоящий момент данный поток. Любая память, не принадлежащая к узлу, на котором в настоящее время выполняется поток, называется удаленной. Удаленная память также иногда называется внешней. Отношение времен доступа к внешней и локальной памяти называется коэффициентом NUMA. Если коэффициент NUMA равен 1, значит, это симметричная многопроцессорная система. Чем выше этот коэффициент, тем больше издержки на доступ к памяти других узлов. Приложения Windows (в том числе SQL Server 2000, пакет обновления 3 и более ранние версии), не поддерживающие архитектуру NUMA, иногда выполняются на оборудовании NUMA неэффективно.

Главный выигрыш от использования NUMA — это масштабируемость. Архитектура NUMA разработана, чтобы преодолеть ограничения масштабирования, присущие архитектуре симметричной мультипроцессорной обработки (SMP). В архитектуре SMP доступ ко всей памяти производится через общую шину памяти. Для относительно небольшого числа процессоров это работает отлично, но при наличии десятков и даже сотен процессоров конкуренция за доступ к шине памяти слишком велика. NUMA устраняет эти узкие места, ограничивая количество ЦП на одной шине памяти и объединяя по высокоскоростному соединению множество узлов.

Узел NUMA с 4 процессорами

Сравнение оборудования NUMA с программной архитектурой

NUMA способна уравнивать использование памяти ЦП с помощью специального оборудования (программная архитектура NUMA) или путем настройки памяти SQL Server (программный NUMA). При запуске SQL Server конфигурируется в зависимости от того, на какой операционной системе он выполняется, а также от оборудования или настройки программной архитектуры NUMA. Как для программной архитектуры, так и для оборудования NUMA, при запуске SQL Server в конфигурации NUMA в журнале SQL Server регистрируется мультирежимное конфигурационное сообщение для каждого узла, а также маска ЦП.

Оборудование NUMA

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

Если имеется оборудование NUMA, оно может быть настроено так, что вместо NUMA используется чередующаяся память. В этом случае Windows и, следовательно, SQL Server, не обнаружат на компьютере аппаратной поддержки NUMA. Выполните следующий запрос, чтобы узнать, сколько узлов памяти доступно SQL Server:

SELECT DISTINCT memory_node_id
FROM sys.dm_os_memory_clerks

Если SQL Server возвращает только один узел памяти (узел 0), компьютер либо не имеет оборудования NUMA, либо оборудование настроено на использование чередующейся памяти (не NUMA). Если есть подозрения, что оборудование NUMA настроено неправильно, обратитесь к поставщику оборудования, чтобы он включил поддержку NUMA. SQL Server не обрабатывает конфигурацию NUMA, если в аппаратном режиме NUMA в системе имеется не более четырех ЦП и по крайней мере на одном узле находится только один ЦП.

Программная архитектура NUMA

SQL Server позволяет группировать ЦП в узлы, называемые программной архитектурой NUMA. Как правило, программная архитектура NUMA конфигурируется, когда имеется несколько ЦП, но нет оборудования NUMA. Программную архитектуру NUMA также можно использовать для дальнейшего разделения NUMA-узлов оборудования на более мелкие группы. Только планировщик SQL Server и сетевой интерфейс SQL Server (SNI) поддерживают программную архитектуру NUMA. Следовательно, программная архитектура NUMA не влияет на узлы памяти, созданные на основе оборудования NUMA. Поэтому, например, если в компьютере с поддержкой SMP установлено 8 ЦП, при создании 4 NUMA-узлов программной архитектуры по 2 ЦП в каждом все четыре NUMA-узла будут обслуживаться лишь одним узлом памяти. Программная архитектура NUMA не обеспечивает соответствия памяти и ЦП.

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

Нельзя создать программную архитектуру NUMA, в которую включены ЦП, принадлежащие узлам с разным оборудованием NUMA. Например, если на компьютере установлено оборудование 8 ЦП (0...7) и имеется два узла оборудования NUMA (ЦП 0-3 и 4-7), можно создать программную архитектуру NUMA, объединив ЦП (0,1) и ЦП (2,3). Нельзя создать программную архитектуру NUMA с участием ЦП (1,5), но можно использовать соответствие ЦП, чтобы установить соответствие экземпляра SQL Server с ЦП, принадлежащими различным NUMA-узлам. Для предыдущего примера это означает, что если SQL Server использует ЦП 0-3, для них будет существовать один поток ввода-вывода и отложенной записи. Если в предыдущем примере SQL Server использует ЦП 1, 2, 5 и 6, он получит доступ к двум NUMA-узлам и, соответственно, двум потокам ввода-вывода и отложенной записи.

ПримечаниеПримечание

В некоторых аппаратных конфигурациях общие ресурсы, такие как кэш L3/L4, используются совместно. Вокруг этих общих ресурсов можно группировать процессоры при создании NUMA-узлов программной архитектуры.

Дополнительные сведения см. в разделе Как настроить сервер SQL Server на использование программной архитектуры NUMA.

См. также

Задания

Основные понятия