Всегда ли NUMA полностью NUMA или существуют также гибридные системы?
Я работаю над серверным приложением высокого класса, где производительность критична. Учитывая, что серверы часто используют архитектуры NUMA, серверное приложение также использует стратегии выделения памяти с учетом NUMA для повышения производительности доступа к памяти.
Тесты показывают, что доступ к памяти, когда поток и память находятся на другом узле NUMA, примерно на 30% медленнее, чем когда поток и память находятся на одном и том же узле NUMA.
Мой вопрос: когда сервер использует NUMA-архитектуру, все ли память выделена для конкретного процессора, или у серверов может быть гибридный подход, где помимо NUMA-памяти есть и не-NUMA-память. И в этом случае, как локальная NUMA-память, нелокальная NUMA-память и не NUMA-память сравниваются в отношении производительности?
РЕДАКТИРОВАТЬ: серверное оборудование работает под управлением Windows (Windows Server 2012 или 2012R2 является разумным минимальным требованием).
2 ответа
Нет, система NUMA - это система NUMA, есть узлы (как правило, процессоры), каждый узел имеет свою собственную память - большинство современных ОС стараются убедиться, что все выделения памяти для процесса находятся на том же узле, на котором выполняется процесс. Если это не может произойти, тогда да, вы получите замедление памяти, которое вы видели, когда узел по сути действует как контроллер памяти для другого узла, а не идеально. Но нет, я не знаю гибрид, который был бы доступен в обычных системах сейчас - для начала, что бы управлять этой памятью?
Поскольку я пока не могу комментировать...
Вся память - это память NUMA, но вы можете взломать свой код, чтобы использовать локальность в памяти, то есть вы можете закрепить некоторые приложения на процессорах, у которых есть память, необходимая для запуска этих приложений, которые могут дать вам лучшие результаты с точки зрения производительности. Особенно, если вы используете виртуализацию, это очень важно. Взгляните на эту ссылку http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/. Надеюсь, это поможет.