Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Библиотека политик NUMA (неоднородный доступ к памяти) (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() выделит страницу, как если бы нить выполнила чтение  (загрузку)  по  этому  адресу,  и
       вернёт идентификатор узла, на котором была размещена страница.

       If  flags  specifies MPOL_F_NODE, but not MPOL_F_ADDR, and the thread's current policy is MPOL_INTERLEAVE
       or MPOL_WEIGHTED_INTERLEAVE, then get_mempolicy()  will return in the location pointed to by  a  non-NULL
       mode  argument,  the node ID of the next node that will be used for interleaving of internal kernel pages
       allocated on behalf of the thread.  These allocations include pages for memory-mapped  files  in  process
       memory  ranges  mapped using the mmap(2)  call with the MAP_PRIVATE flag for read accesses, and in memory
       ranges mapped with the MAP_SHARED flag for all accesses.

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

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

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

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

ОШИБКИ

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

       EINVAL The  value  specified  by maxnode is less than the number of node IDs supported by the system.  Or
              flags specified values other than MPOL_F_NODE or MPOL_F_ADDR; or flags specified  MPOL_F_ADDR  and
              addr  is  NULL,  or  flags  did not specify MPOL_F_ADDR and addr is not NULL.  Or, flags specified
              MPOL_F_NODE but not MPOL_F_ADDR and the current  thread  policy  is  neither  MPOL_INTERLEAVE  nor
              MPOL_WEIGHTED_INTERLEAVE.   Or,  flags  specified  MPOL_F_MEMS_ALLOWED  with either MPOL_F_ADDR or
              MPOL_F_NODE.  (And there are other EINVAL cases.)

СТАНДАРТЫ

       Linux.

ИСТОРИЯ

       Linux 2.6.7.

ПРИМЕЧАНИЯ

       Информация о библиотеке доступна в 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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                 get_mempolicy(2)