Назад | Перейти на главную страницу

Всегда ли NUMA полностью NUMA или существуют также гибридные системы?

Я работаю над серверным приложением высокого класса, где производительность имеет решающее значение. Учитывая, что серверы часто используют архитектуру NUMA, серверное приложение также использует стратегии выделения памяти с учетом NUMA для повышения производительности доступа к памяти.

Тесты показывают, что доступ к памяти, когда поток и память находятся на другом узле NUMA, примерно на 30% медленнее, чем когда поток и память находятся на одном узле NUMA.

Мой вопрос: когда сервер использует NUMA-архитектуру, вся память выделена для определенного процессора или серверы могут использовать гибридный подход, когда помимо NUMA-памяти есть еще и не-NUMA-память. И как в этом случае сравнивать производительность между локальной NUMA-памятью, нелокальной-NUMA-памятью и не-NUMA-памятью?

РЕДАКТИРОВАТЬ: Серверное оборудование работает под управлением Windows (Windows Server 2012 или 2012R2 является минимальным разумным требованием).

Нет, система NUMA - это система NUMA, есть узлы (обычно процессоры), каждый узел имеет свою собственную память - большинство современных ОС будут пытаться гарантировать, что все выделения памяти для процесса находятся на том же узле, на котором запущен процесс. Если этого не может произойти, то да, вы получаете замедление памяти, которое вы видели, когда узел по сути действует как контроллер памяти для другого узла, а не идеально. Но нет, я не знаю ни одного гибрида, доступного в массовых системах прямо сейчас - для начала, что бы управляло этой памятью?

Поскольку я еще не могу комментировать ...

Вся память - это память NUMA, но вы можете взломать свой код, чтобы использовать локальность в памяти, то есть вы можете закрепить некоторые приложения на процессорах, у которых есть память, необходимая для запуска этих приложений, которые могут дать вам лучшие результаты с точки зрения производительности. Это очень важно, особенно если вы используете виртуализацию. Взгляните на эту ссылку http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/. Надеюсь, это поможет.