migrate_pages(2) System Calls Manual migrate_pages(2) NUME migrate_pages - muta toate paginile dintr-un proces catre un alt set de noduri BIBLIOTECA Biblioteca de politici NUMA (,,Non-Uniform Memory Access": acces neuniform la memorie) (libnuma, -lnuma) REZUMAT #include long migrate_pages(int pid, unsigned long maxnode, const unsigned long *old_nodes, const unsigned long *new_nodes); DESCRIERE migrate_pages() incearca sa mute toate paginile procesului pid care se afla in nodurile de memorie old_nodes in nodurile de memorie din new_nodes. Paginile care nu se afla in niciun nod din old_nodes nu vor fi migrate. Pe cat posibil, nucleul pastreaza relaia topologica relativa in interiorul old_nodes in timpul migrarii catre new_nodes. Argumentele old_nodes i new_nodes sunt indicatori la mati de bii de numere de noduri, cu pana la maxnode bii in fiecare masca. Aceste mati sunt pastrate ca matrice de numere intregi fara semn long (in ultimul numar intreg long, biii dincolo de cei specificai de maxnode sunt ignorai). Argumentul maxnode este numarul maxim de noduri din masca de bii plus unu (este acelai ca in mbind(2), dar diferit de select(2)). Argumentul pid este ID-ul procesului ale carui pagini urmeaza sa fie mutate. Pentru a muta pagini intr-un alt proces, apelantul trebuie sa fie privilegiat (CAP_SYS_NICE) sau ID-ul real sau efectiv al utilizatorului procesului apelant trebuie sa coincida cu ID-ul real sau cu ID-ul utilizatorului salvat al procesului inta. Daca pid este 0, atunci migrate_pages() muta paginile procesului apelant. Paginile partajate cu un alt proces vor fi mutate numai daca procesul iniiator are privilegiul CAP_SYS_NICE. VALOAREA RETURNATA In caz de succes, migrate_pages() returneaza numarul de pagini care nu au putut fi mutate (de exemplu, un raspuns zero inseamna ca toate paginile au fost mutate cu succes). In caz de eroare, returneaza -1 i configureaza errno pentru a indica eroarea. ERORI-IEIRE EFAULT O parte sau intregul interval de memorie specificat de old_nodes/new_nodes i maxnode se afla in afara spaiului de adrese accesibil. EINVAL Valoarea specificata de maxnode depaete o limita impusa de nucleu. Sau, old_nodes sau new_nodes specifica unul sau mai multe ID-uri de nod care sunt mai mari decat ID-ul de nod maxim acceptat. Sau, niciunul dintre ID-urile de noduri specificate de new_nodes nu este in linie i nu este permis de contextul cpuset curent al procesului sau niciunul dintre nodurile specificate nu conine memorie. EPERM Privilegiu insuficient (CAP_SYS_NICE) pentru a muta pagini ale procesului specificat de pid sau privilegiu insuficient (CAP_SYS_NICE) pentru a accesa nodurile inta specificate. ESRCH Nu a putut fi gasit niciun proces care sa corespunda cu pid. STANDARDE Linux. ISTORIC Linux 2.6.16. NOTE Pentru informaii privind suportul de biblioteca, consultai numa(7). Utilizai get_mempolicy(2) cu indicatorul MPOL_F_MEMS_ALLOWED pentru a obine setul de noduri care sunt permise de cpuset-ul procesului apelant. Reinei ca aceste informaii pot fi modificate in orice moment prin reconfigurarea manuala sau automata a cpuset-ului. Utilizarea migrate_pages() poate avea ca rezultat pagini a caror locaie (nod) incalca politica de memorie stabilita pentru adresele specificate (a se vedea mbind(2)) i/sau procesul specificat (a se vedea set_mempolicy(2)). Adica, politica de memorie nu constrange nodurile de destinaie utilizate de migrate_pages(). Antetul nu este inclus in glibc, ci necesita instalarea libnuma-devel sau a unui pachet similar. CONSULTAI I 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 in arborele sursa al nucleului Linux TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 migrate_pages(2)