Описание тега numa
Неравномерный доступ к памяти описывает архитектуру памяти, в которой ОЗУ разделено на несколько мест. Местности называются узлами, и в большинстве аппаратных средств соотносятся с разъемами процессора процессора. В таких системах время доступа к ОЗУ зависит от того, какой ЦП вызывает FETCH и какой узел NUMA находится в запрошенном ОЗУ. ОЗУ, локальное для узла ЦП, будет извлекаться быстрее, чем ОЗУ локальное для другого узла ЦП.
Системы с поддержкой NUMA предоставляют подсказки для ОС в виде определенных структур BIOS. Одной из таких структур является Таблица информации о местонахождении системы, которая описывает относительную стоимость взаимодействия определенных узлов. В полностью подключенной системе, где каждый узел может напрямую общаться с каждым другим узлом, эта таблица, вероятно, будет иметь одинаковые значения для каждого узла. В системе, где узлы не имеют прямого соединения, например кольцевая топология, эта таблица сообщает ОС, сколько времени требуется для связи удаленным узлам.
NUMA предоставляет операционным системам и программам с поддержкой NUMA дополнительный центр оптимизации. Такие программы (например, vmware-esx) будут хранить локальную память процесса на том же NUMA-узле, что, в свою очередь, позволяет сократить время отклика памяти. Для операционных систем с поддержкой NUMA операционная политика обычно устанавливается для процессов, которые будут обслуживаться из памяти конкретного узла NUMA как можно дольше, что также ограничивает выполнение ядрами, связанными с этим узлом.
Для систем, которые не будут работать с программами, поддерживающими NUMA, разное время доступа к памяти может вызвать, казалось бы, неопределяемые различия в производительности. Серьезность этого несоответствия очень зависит от используемой операционной системы. Из-за этого у большинства производителей серверов есть опция BIOS для чередования памяти между узлами NUMA для создания единого времени доступа.
Исторически на старых серверах (до 2011 года) этот параметр BIOS был установлен на interleave
по умолчанию. Однако успехи в поддержке ОС в архитектуре межузловых подключений NUMA и производителей процессоров изменили это, и такие настройки все чаще устанавливаются так, чтобы ОС могла чередовать память.
Для операционных систем Linux команда numactl
может использоваться для управления политикой памяти для системы с поддержкой NUMA.