Наше приложение:
- Конфигурация оборудования представляет собой двойной сервер Xeon под управлением Windows 7/64bit. Каждый Xeon имеет собственную 12-гигабайтную оперативную память в конфигурации [NUMA][1] с мостом, соединяющим две области памяти вместе.
- Все программное обеспечение написано с использованием VS2008 на С++ и скомпилировано как 64-битные приложения.
- Приложение Generation создает большую область общей памяти (4–6 ГБ), к которой будут обращаться только процессы, настроенные с привязкой к процессору для запуска на первом процессоре Xeon.
- Приложение-получатель создает большую область общей памяти (2-4 ГБ), которая в основном используется процессами, установленными с привязкой к процессору для запуска на втором процессоре Xeon. Однако, когда приложение Generation завершает создание одного набора данных (от 32 МБ до 128 МБ), оно передает эту информацию в область общей памяти, работающую на этом Xeon.
- Мы используем библиотеку Boost Interprocess для управления нашими разделяемыми областями памяти.
Мой вопрос: когда каждый из процессов, создающих свою область общей памяти, выделяет ли Windows эту память на том же чипе Xeon, который ее создал? Или я должен явно назначить память конкретному чипу Xeon, используя одну из функций памяти Numa?
РЕДАКТИРОВАТЬ - чтобы прояснить, что такое NUMA, из Википедии -
Неоднородный доступ к памяти или архитектура неоднородной памяти (NUMA) — это конструкция компьютерной памяти, используемая в многопроцессорных системах, где время доступа к памяти зависит от расположения памяти относительно процессора. В NUMA процессор может обращаться к своей собственной локальной памяти быстрее, чем к нелокальной памяти, то есть к памяти, локальной для другого процессора, или к памяти, совместно используемой процессорами между процессорами.
Ссылка: http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access для подробнее. На мой взгляд, это одна из тех вещей, о которых нам всем придется узнать больше, поскольку многопроцессорность становится все более распространенной.
[1]: http://msdn.microsoft.com/en-us/library/aa363804%28VS.85%29.aspxbetween.