Ответы:
Opterons и Nelahem (55xx и более поздние версии) Xeons имеют архитектуру NUMA - каждый сокет имеет свою собственную шину памяти, и между сокетами есть связь. Эта ссылка называется Hypertransport для систем Opteron и Quickpath для Xeons. G5 предшествует Nelahem и до сих пор использует старую Front Side Bus, которая не является архитектурой NUMA.
Opterons и 35xx / 55xx или более поздние версии Xeon могут использовать режим адресации с чистой NUMA, где память каждого сокета находится в непрерывном разделе физического адресного пространства. Если вы хотите запустить приложение, поддерживающее NUMA (например, поддержку привязки к процессору), вы можете настроить систему для работы в этом режиме.
Системы этого типа также имеют унаследованный режим, в котором отдельные 4К-страницы чередуются через сокеты, поэтому доступ к памяти тонко смешивается между сокетами. Это приводит к небольшому снижению производительности, поскольку половина всех обращений к памяти должна проходить через шину Hypertransport к другому сокету (Quickpath в случае Xeons). Однако большинство обращений будет кэшировано, поэтому накладные расходы относительно невелики.
Этот режим позволяет системам эффективно запускать приложения, не поддерживающие NUMA, и обычно является режимом по умолчанию, в котором загружается система. Обычно это можно настроить в BIOS.
Ваш G5 не будет работать в режиме NUMA, потому что он имеет архитектуру передней шины. FSB - это одна шина, совместно используемая памятью и всеми сокетами процессора, поэтому она имеет одинаковые характеристики доступа к памяти, т.е. не NUMA. Мне неизвестны какие-либо приложения wintel или lintel, которые зависят от архитектуры NUMA; Скорее всего, приложение не нуждается в NUMA, но будет поддерживать его, если оно есть. Вы, вероятно, все еще можете запустить приложение на вашей старой системе G5. Является ли это целесообразным, зависит от приложения и того, чего вы хотите достичь.
Поддержка NUMA в приложениях
Некоторые приложения (например, SQL Server) могут реализовать значительные преимущества в производительности за счет оптимизации памяти, использования ввода-вывода и планирования, чтобы минимизировать штрафы за нелокальный доступ. Реализация поддержки NUMA в приложении требует наличия вспомогательных средств, доступных из операционной системы, таких как:
Сходство с планировщиком: поток может быть помещен в пул, который имеет предпочтение планировать на одном или группе процессоров. Обратите внимание, что NUMA может иметь более одного процессора на одной шине памяти - в случае многоядерного Opteron или Xeon все ядра на одном кристалле используют одну шину. Это позволяет потоку запрашивать локальную память или использовать пулы памяти, локальные по отношению к пулу ЦП. Кроме того, когда поток хранится на локальном процессоре, он минимизирует перегрузку кеша, так как поток запланирован - рабочий набор - это просто рабочий набор потоков, использующих это конкретное ядро.
Сходство с памятью: поток может запросить память и указать, что она должна или должна быть доступна из локальной памяти сокета. Сохранение памяти и использования ЦП на одной шине минимизирует накладные расходы при доступе к нелокальной памяти. Издержки не так велики в современных системах NUMA, но нелокальный доступ был намного медленнее в более старых системах, таких как раннее Sequent gear.
Привязка ввода / вывода: периферийные шины могут быть привязаны к локальному ЦП, поэтому обработка ввода / вывода может быть запланирована на процессорах, которые находятся близко к вводу / выводу. Большинство систем NUMA имеют несколько шин ввода-вывода, поэтому планирование обработчиков прерываний и прямого доступа к памяти в локальной памяти дает некоторое преимущество в производительности ввода-вывода.