numa(7) | Miscellaneous Information Manual | numa(7) |
numa - обзор архитектуры с неравномерной памятью (Non-Uniform Memory Architecture)
Неравномерный доступ к памяти (NUMA) приписывают микропроцессорным системам, у которых память разделяется на узлы. Время доступа к узлу памяти зависит от относительного расположения обращающегося ЦП к узлу (в этом отличие от симметричных мультипроцессорных систем, в которых время доступа ко всей памяти одинаково для всех ЦП). Обычно, каждый ЦП в системе NUMA имеет свой локальный узел памяти, чьё содержимое можно получить быстрее, чем из памяти локального узла другого ЦП или из памяти шины, которая доступна для всех ЦП.
В ядре Linux реализованы следующие системные вызовы, относящиеся к NUMA: get_mempolicy(2), mbind(2), migrate_pages(2), move_pages(2) и set_mempolicy(2). Однако, приложения, обычно, должны использовать интерфейс, предоставляемый библиотекой libnuma; смотрите «Поддержка в библиотеках» далее.
В этом файле содержится информация о политике и выделении памяти NUMA для процесса.
Each line contains information about a memory range used by the process, displaying—among other information—the effective memory policy for that memory range and on which nodes the pages have been allocated.
Файл numa_maps доступен только на чтение. При чтении /proc/<pid>/numa_maps ядро сканирует виртуальное адресное пространство процесса и выдаёт как используется память. Одна строка соответствует уникальной области памяти процесса.
В первом поле каждой строки содержится начальный адрес области памяти. Это поле позволяет провести параллель с файлом /proc/<pid>/maps, в котором содержится конечный адрес области и другая информация, такая как права доступа и данные о совместном использовании.
Во втором поле показана политика памяти, которая применена к области в настоящее время. Заметим, что применённая политика необязательно является политикой, установленной процессом для этой области памяти. В частности, если для этой области процесс установил политику «default» (по умолчанию), то применяемая политика для этой области будет политикой процесса, которая может совпадать, а может и не совпадать с «default».
В оставшейся части строки содержится информация о страницах, выделенных в области памяти:
Интерфейсы NUMA не описаны в стандартах.
Системные вызовы Linux NUMA и интерфейс /proc доступны только, если ядро было собрано с включённым параметром CONFIG_NUMA.
Выполняйте компоновку с -lnuma. Библиотека libnuma и требуемый заголовочный файл <numaif.h> доступны в пакете numactl.
Однако, приложения не должны использовать эти системные вызовы напрямую. Вместо этого, рекомендуется использовать интерфейс высокого уровня, предоставляемый функциями numa(3) из пакета numactl. Пакет numactl доступен по адресу ftp://oss.sgi.com/www/projects/libnuma/download/. Пакет также включён в некоторые дистрибутивы Linux. Некоторые дистрибутивы помещают библиотеку для разработки и заголовочные файлы в пакет numactl-devel.
get_mempolicy(2), mbind(2), move_pages(2), set_mempolicy(2), numa(3), cpuset(7), numactl(8)
Русский перевод этой страницы руководства был сделан Alex Nik <rage.iz.me@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
5 февраля 2023 г. | Linux man-pages 6.03 |