Главная » 2017 » Ноябрь » 19 » man 2 get_mempolicy
22:22
man 2 get_mempolicy

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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



ОБЗОР


#include <numaif.h>

long get_mempolicy(int *mode, unsigned long *nodemask,
unsigned long maxnode, void *addr,
unsigned long flags);

Компонуется при указании параметра -lnuma.



ОПИСАНИЕ


Вызов 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.

Если аргумент mode не равен NULL, то get_mempolicy() сохранит режим политики и все
необязательные флаги режима запрашиваемой политики NUMA в место, указанное этим
аргументом. Если nodemask не равно NULL, то значение nodemask, связанной с
политикой, будет сохранено в место, указанное этим аргументом. В maxnode задаётся
количество идентификаторов узлов, которые могут быть сохранены в nodemask — то
есть, максимальный идентификатор узла плюс один. Значение, указанное в maxnode,
всегда округляется до кратного 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), идентификатор узла следующего узла, который будет
использован при чередовании внутренних страниц ядра, выделяемых для нити. Эти
При успешном выполнении 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).



ВЕРСИИ


Системный вызов get_mempolicy() был добавлен в ядро Linux версии 2.6.7.



СООТВЕТСТВИЕ СТАНДАРТАМ


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



ЗАМЕЧАНИЯ


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



СМОТРИТЕ ТАКЖЕ


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



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 414 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar