Man page - migrate_pages(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

migrate_pages

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

migrate_pages - переносит все страницы процесса на другой набор узлов

БИБЛИОТЕКА

Библиотека политик NUMA (неоднородный доступ к памяти) ( libnuma , -lnuma )

ОБЗОР

#include <numaif.h>

long migrate_pages(int pid , unsigned long maxnode,
const unsigned long *
old_nodes,
const unsigned long *
new_nodes );

ОПИСАНИЕ

Вызов migrate_pages () пытается перенести все страницы процесса с идентификатором pid , находящиеся в памяти узлов old_nodes , в память узлов new_nodes . Страницы, не расположенные в узлах old_nodes , не переносятся. При переносе на new_nodes ядро в максимально возможной степени поддерживает относительную топологию связи внутри old_nodes .

Аргументы old_nodes и new_nodes представляют собой указатели на маски битов номеров узлов, до maxnode в каждой маске. Эти маски обрабатываются как массивы беззнаковых целых long (в последнем целом long биты, лежащие за пределом maxnode , игнорируются). Аргумент maxnode представляет собой максимальный номер узла в битовой маске плюс 1 (также как в mbind (2), но отличается от select (2)).

В аргументе pid задаётся идентификатор процесса, чьи страницы будут перемещаться. Чтобы перемещать страницы не своего процесса, вызывающий должен быть привилегированным ( CAP_SYS_NICE ) или реальный или эффективный ID пользователя вызывающего процесса должен совпадать с реальным или сохранённым ID пользователя процесса назначения. Если pid равен 0, то migrate_pages () перемещает страницы вызвавшего процесса.

Совместно используемые с другими процессами страницы будут перемещаться только, если первоначальный процесс имеет мандат CAP_SYS_NICE .

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

При нормальном завершении работы migrate_pages () возвращает количество неперемещённых страниц (то есть, ноль означает, что все страницы успешно перемещены). В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EFAULT

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

EINVAL

Значение maxnode превышает введённое ядром ограничение. В old_nodes или new_nodes задан один или более ID узлов, превышающих поддерживаемый максимальный ID узла. Или ни один из ID узлов, указанных в new_nodes , включен и доступен из контекста текущего набора процессоров процесса, или ни один из узлов не содержит память.

EPERM

Недостаточно прав ( CAP_SYS_NICE ) для перемещения страниц процесса, заданного pid , или недостаточно прав ( CAP_SYS_NICE ) для доступа к указанным узлам назначения.

ESRCH

Не найден процесс с указанным pid .

СТАНДАРТЫ

Linux.

ИСТОРИЯ

Linux 2.6.16.

ПРИМЕЧАНИЯ

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

Используйте get_mempolicy (2) с флагом MPOL_F_MEMS_ALLOWED для получения набора узлов, которые доступны в наборе ЦП вызывающему процессу. Заметим, что эта информация может измениться в любое время вручную или при автоматической перенастройке набора ЦП.

Использование migrate_pages () может привести к тому, что расположение страниц (на узле) нарушит политику памяти, установленную для заданных адресов (см. mbind (2)) и/или заданного процесса (см. set_mempolicy (2)). То есть политика памяти не ограничивает узлы назначения, используемые migrate_pages ().

Заголовочный файл <numaif.h> не включён в glibc, его можно найти в пакете с именем libnuma-devel или подобным названием.

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

get_mempolicy (2), mbind (2), set_mempolicy (2), numa (3), numa_maps (5), cpuset (7), numa (7), migratepages (8), numastat (8)

Файл Documentation/vm/page_migration.rst в дереве исходного кода ядра Linux

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Alexey <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com>, Малянов Евгений Викторович <maljanow@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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