Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       get_mempolicy - возвращает политику работы с памятью NUMA для нити

LIBRARY

       NUMA (Non-Uniform Memory Access) policy library (libnuma, -lnuma)

СИНТАКСИС

       #include <numaif.h>

       long get_mempolicy(int *mode,
                          unsigned long nodemask[(.maxnode + ULONG_WIDTH - 1)
       / ULONG_WIDTH],
                          unsigned long maxnode, void *addr,
                          unsigned long flags);

ОПИСАНИЕ

       Вызов  get_mempolicy()  возвращает  политику  NUMA  вызывающей  нити  или адреса памяти (в
       зависимости от значения flags).

       Машина с NUMA имеет различные контроллеры памяти с различными расстояниями до определённых
       ЦП. Политикой памяти задаётся узел, на котором выделяется память для нити.

       Если  значение  flags  равно  0,  то  в  буферы, указанные в mode и nodemask, возвращается
       информация о политике по умолчанию для вызывающей нити  (которая  была  задана  с  помощью
       set_mempolicy(2)).  Полученное  значение  может использоваться для восстановления политики
       нити в её состояние на время  вызова  get_mempolicy()  с  помощью  set_mempolicy(2).  Если
       значение flags равно 0, то значение addr должно быть равно NULL.

       Если  flags равно MPOL_F_MEMS_ALLOWED (доступно, начиная с Linux 2.6.24), то аргумент mode
       игнорируется и набор узлов (их памяти), которые разрешено  указывать  нити  в  последующих
       вызовах  mbind(2)  или  set_mempolicy(2)  (в  отсутствии  любых  значений  флагов режима),
       возвращается в nodemask. Не разрешено объединять  MPOL_F_MEMS_ALLOWED  с  MPOL_F_ADDR  или
       MPOL_F_NODE.

       Если  flags  равно  MPOL_F_ADDR, то возвращается информация об управляющей политике адреса
       памяти, указанного в addr. Эта политика может отличаться от политики  нити  по  умолчанию,
       если  mbind(2) или одна из вспомогательных функций, описанных в numa(3), были использованы
       при установлении политики для диапазона памяти, содержащего addr.

       If the mode argument is not NULL, then get_mempolicy()  will store the policy mode and any
       optional  mode  flags  of  the  requested  NUMA  policy in the location pointed to by this
       argument.  If nodemask is not NULL, then the nodemask associated with the policy  will  be
       stored  in the location pointed to by this argument.  maxnode specifies the number of node
       IDs that can be stored into nodemask—that is, the maximum node ID  plus  one.   The  value
       specified by maxnode is always rounded to a multiple of sizeof(unsigned long)*8.

       Если  в  flags  указано MPOL_F_NODE и MPOL_F_ADDR, то get_mempolicy() вернёт идентификатор
       узла, на котором расположен адрес addr в расположение, заданное mode. Если для  указанного
       адреса  страница  ещё  не  выделена, то get_mempolicy() выделит страницу, как если бы нить
       выполнила чтение (загрузку) по этому адресу, и вернёт идентификатор узла, на котором  была
       размещена страница.

       Если flags содержит MPOL_F_NODE, но не MPOL_F_ADDR, и значение текущей политики нити равно
       MPOL_INTERLEAVE, то get_mempolicy() вернёт в расположение, указанное в аргументе mode  (не
       равно NULL), идентификатор узла следующего узла, который будет использован при чередовании
       внутренних страниц ядра, выделяемых для  нити.  Эти  выделения  содержат  страницы  памяти
       отображённых  файлов  в диапазоне памяти процесса, отображённых с помощью вызова mmap(2) с
       флагом MAP_PRIVATE для чтения, и в диапазонах памяти, отображённых  с  флагом  MAP_SHARED,
       для всех операций.

       Другие значения флагов зарезервированы.

       Обзор возможных политик смотрите в set_mempolicy(2).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При  успешном выполнении get_mempolicy() возвращает 0; при ошибке — -1, а в errno задаётся
       причина ошибки.

ОШИБКИ

       EFAULT Часть всего диапазона памяти, заданная в nodemask и maxnode, указывает  за  пределы
              доступного адресного пространства.

       EINVAL Значение,   указанное   в   maxnode,   меньше   количества  идентификаторов  узлов,
              поддерживаемых системой. Или в flags указаны значения, отличные от MPOL_F_NODE  или
              MPOL_F_ADDR;  или  в  flags  указано  MPOL_F_ADDR и addr равно NULL, или в flags не
              указано MPOL_F_ADDR и addr не равно NULL. Или в flags указано  MPOL_F_NODE,  но  не
              MPOL_F_ADDR  и значение текущей политики нити не равно MPOL_INTERLEAVE. Или в flags
              указано MPOL_F_MEMS_ALLOWED вместе с MPOL_F_ADDR или  MPOL_F_NODE  (и  есть  другие
              случаи возврата EINVAL).

ВЕРСИИ

       The get_mempolicy()  system call was added in Linux 2.6.7.

СТАНДАРТЫ

       Данный вызов есть только в Linux.

ЗАМЕЧАНИЯ

       Информация о библиотеке доступна в numa(7).

СМ. ТАКЖЕ

       getcpu(2), mbind(2), mmap(2), set_mempolicy(2), numa(3), numa(7), numactl(8)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан   Azamat   Hackimov
       <azamat.hackimov@gmail.com>,   Dmitry   Bolkhovskikh   <d20052005@yandex.ru>,    Vladislav
       <ivladislavefimov@gmail.com>,    Yuri    Kozlov   <yuray@komyakino.ru>   и   Иван   Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.