Оптимизации NUMA

В Windows Server 2003 появились оптимизации для компьютеров NUMA в планировщике потоков и диспетчере памяти, а в Windows Server 2008 оптимизации NUMA добавлены в диспетчер операций ввода-вывода и расширены оптимизации NUMA диспетчера памяти.

Системы NUMA, как правило, являются многопроцессорными системами, в которых память обладает различной задержкой, зависящей от того, который процессор обращается к ней (см. рис. 9). Память делится на узлы, при этом задержки между процессорами и узлами могут иметь разное значение, и каждый ЦПУ считается частью того узла, к которому он имеет самый быстрый доступ.

Рис. 9. Пример системы NUMA

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

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

В Windows Server 2008 диспетчер памяти делит невыгружаемые буферы памяти ядра (память, используемая ядром и драйверами устройств для хранения данных, которая постоянно находится в ОЗУ) между узлами, чтобы эти участки памяти выделялись на узле, на котором инициировано выделение памяти. Системные записи таблицы страниц (PTE) выделяются на узле, инициирующем выделение, если для выделения памяти требуется новая страница таблицы страниц для удовлетворения потребности в памяти, вместо того, чтобы делать это на любом другом узле, как это происходит в среде Windows Server 2003.

До появления системы Windows Server 2008 прерывание и соответствующий отложенный вызов процедуры (DPC) для хранения или сетевых операций ввода-вывода мог выполняться на любом ЦПУ, включая процессоры с другого узла, а не того, на котором инициирован ввод-вывод. Это могло стать причиной того, что данные, считанные или записанные операцией ввода-вывод, окажутся в памяти другого узла, а не того, на котором был получен к ним доступ.

Чтобы избежать этого, система ввода-вывода операционной системы Windows Server 2008 направляет выполнение DPC на ЦПУ того узла, где был инициирован ввод-вывод, а системы, в которые входят устройства, поддерживающие формат MSI-X шины PCI (расширение стандарта MSI), могут расширить возможности размещения выполнения операций ввода-вывода с помощью драйверов устройств, которые используют преимущества интерфейсов API операционной системы Windows Server 2008 для направления прерывания ввода-вывода на процессор, инициировавший ввод-вывод.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: