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

НАИМЕНОВАНИЕ
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 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. migrate_pages(2)