2010-09-17 9 views
2

Наше приложение:NUMA памяти распределение регионов в ОС Windows 7

  1. Аппаратная конфигурация представляет собой двойной сервер Xeon работает с Windows 7/64bit. Каждый Xeon имеет собственную RAM 12 ГБ в конфигурации [NUMA] [1] с мостом, соединяющим две области памяти вместе.
  2. Все программное обеспечение написано с использованием VS2008 в C++ и скомпилировано как 64-разрядные приложения.
  3. Приложение Generation создает область большой общей памяти (4-6gb), к которой будут доступны только процессы, настроенные на совместимость процессора для работы на первом процессоре Xeon.
  4. Приложение-получатель создает большую область общей памяти (2-4gb), которая в основном используется процессами, установленными с возможностью работы процессора на втором процессоре Xeon. Однако, когда приложение Generation завершает создание одного набора данных (от 32 до 128 мб), он передает эту информацию в область разделяемой памяти, работающую на этом Xeon.
  5. Мы используем библиотеку Boost Interprocess для управления областями разделяемой памяти.

Вопрос в том, когда каждый из процессов, создающих область разделяемой памяти, выделяет ли Windows эту память на том же чипе Xeon, который его создал? Или я должен явно назначать память для конкретного чипа Xeon, используя одну из функций памяти Numa?


EDIT - помочь прояснить, что NUMA есть из Википедии -

неоднородный доступ к памяти или Non-Uniform Архитектура памяти (NUMA) является дизайн памяти компьютера используется в мультипроцессорах , где память время доступа зависит от памяти местоположение относительно процессора. В NUMA процессор может получить доступ к собственной локальной памяти быстрее, чем нелокальная память , то есть локальная память другого процессора или общей памяти между процессорами. Между процессорами.

Ссылка http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access для более подробной информации. Для меня это одна из тех вещей, которые мы все должны будем узнать больше, поскольку многопроцессорность становится более распространенной.

[1]: http://msdn.microsoft.com/en-us/library/aa363804%28VS.85%29.aspxbetween процессоры.

+0

Я не знаю, как сидеть на корточках по этой теме, но я не вижу, как предоставление ОС дополнительной информации о вашем шаблоне использования памяти навредит чему-либо. –

+0

Я также не знаю, как сидеть на корточках, так что +1 от меня. Один вопрос: что вы подразумеваете под «распределением этой памяти на том же чипе Xeon, который его создал?» –

ответ

1

Windows будет выделять локальную память запрашивающей нити; однако локаль не указана Microsoft. Локальный может быть одним из трех вариантов: идеальный процессор потока, маску сродства процессора потока или текущий процессор потока (я забываю, что представляет собой текущая реализация).

По сути, ответ да; однако общий доступ - это выделение всей памяти из «потока контроллера», которое не является аффинитированным, и, следовательно, память находится рядом с контроллером, а не потоками со специфическим сродством.

+1

Изучая ответ на другой вопрос, я нашел презентацию в WinHEC о том, что Windows теперь использует IdealProcessor. http://download.microsoft.com/download/a/f/d/afdfd50d-6eb9-425e-84e1-b4085a80e34e/SVR-T331_WH07.pptx – Brian

Смежные вопросы