
NUMA (Non Uniform Memory Access) – это способ организации взаимодействия процессоров с памятью, при котором процессоры группируются в объединяемые быстрыми каналами узлы, связанные с определенными областями общей памяти. Каждый процессор имеет доступ ко всем областям памяти, хотя времена доступа к памяти «своего» и «чужих» узлов заметно отличаются. Такой системе принципиально свойственна масштабируемость, ибо число узлов, а, следовательно, и объем разделяемой памяти могут многократно расширяться. В этом и состоит основное достоинство NUMA-платформ перед системами класса SMP (Symmetric Memory Processing), объединяющими процессоры на единой памяти через общую шину или коммутатор, – их возможности масштабирования существенно скромнее.
Многопроцессорный вычислительный комплекс Эльбрус-3S включает в себя четыре узла NUMA, в каждый из которых входит один процессор Эльбрус-S со своей областью общей памяти, подключенной через отдельную шину. Узлы комплекса связаны межпроцессорными линками.
Вычислительный комплекс Эльбрус-3S работает под управлением ОС Linux с ядром 2.6.14, портированным на архитектуру «Эльбрус». Поддержка NUMA в ядре ОС Linux реализована как в архитектурно-независимой, так и в архитектурно-зависимой частях. Логически все изменения в ядре можно разделить на две группы, одна из которых связана с поддержкой библиотеки libnuma, позволяющей управлять политиками выделения памяти для пользовательских задач, другая – с оптимизациями ядра ОС Linux для архитектуры «Эльбрус», предназначенными для ускорения его работы.
Подробнеее... Загрузить файл ![]()
Содержание:
Введение
Оптимизация ядра ОС Linux для архитектуры Эльбрус с поддержкой NUMAОписаны особенности поддержки NUMA в ядре ОС Linux для архитектуры «Эльбрус». Рассматриваются изменения в архитектурно-независимой и архитектурно-зависимой частях ядра, связанные с NUMA и реализацией библиотеки libnuma. Перечислены разработанные авторами методы оптимизации подсистемы памяти ядра, эффективные для NUMA платформ. Описан алгоритм оптимизации, суть которой – создание копий исполняемого кода и константных данных ядра на каждом узле NUMA машины с целью минимизации времени вызова функций ядра на всех узлах.