.\" -*- coding: UTF-8 -*- .\" SPDX-License-Identifier: Linux-man-pages-copyleft-var .\" .\" Copyright 2003,2004 Andi Kleen, SuSE Labs. .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard .\" .\" 2006-02-03, mtk, substantial wording changes and other improvements .\" 2007-08-27, Lee Schermerhorn .\" more precise specification of behavior. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH set_mempolicy 2 "2 mai 2024" "Pagini de manual de Linux 6.9.1" .SH NUME set_mempolicy \- stabilește politica implicită de memorie NUMA pentru un fir și copiii acestuia .SH BIBLIOTECA Biblioteca de politici NUMA („Non\-Uniform Memory Access”: acces neuniform la memorie) (\fIlibnuma\fP, \fI\-lnuma\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBlong set_mempolicy(int \fP\fImod\fP\fB, const unsigned long *\fP\fInodemask\fP\fB,\fP \fB unsigned long \fP\fImaxnode\fP\fB);\fP .fi .SH DESCRIERE \fBset_mempolicy\fP() stabilește politica de memorie NUMA a firului apelant, care constă într\-un mod de politică și zero sau mai multe noduri, la valorile specificate de argumentele \fImode\fP, \fInodemask\fP și \fImaxnode\fP. .P O mașină NUMA are diferite controloare de memorie cu distanțe diferite față de diferitele CPU\-uri. Politica de memorie definește din ce nod este alocată memoria pentru firul de execuție. .P Acest apel de sistem definește politica implicită pentru firele de execuție. Politica firelor de execuție guvernează alocarea de pagini în spațiul de adrese al procesului în afara intervalelor de memorie controlate de o politică mai specifică stabilită de \fBmbind\fP(2). Politica implicită a firelor de execuție controlează, de asemenea, alocarea oricăror pagini pentru fișierele cu memorie alocată utilizând apelul \fBmmap\fP(2) cu fanionul \fBMAP_PRIVATE\fP și care sunt citite (încărcate) numai de către firul de execuție și a fișierelor cu memorie alocată utilizând apelul \fBmmap\fP(2) cu fanionul \fBMAP_SHARED\fP, indiferent de tipul de acces. Politica este aplicată numai atunci când o nouă pagină este alocată pentru firul de execuție. Pentru memoria anonimă, acest lucru se întâmplă atunci când pagina este accesată pentru prima dată de către firul de execuție. .P Argumentul \fImod\fP trebuie să specifice unul dintre \fBMPOL_DEFAULT\fP, \fBMPOL_BIND\fP, \fBMPOL_INTERLEAVE\fP, \fBMPOL_WEIGHTED_INTERLEAVE\fP, \fBMPOL_PREFERRED\fP sau \fBMPOL_LOCAL\fP (care sunt descrise în detaliu în continuare). Toate modurile, cu excepția \fBMPOL_DEFAULT\fP, necesită ca apelantul să specifice nodul sau nodurile la care se aplică modul, prin intermediul argumentului \fInodemask\fP. .P Argumentul \fImod\fP poate include, de asemenea, un \fIfanion de mod\fP opțional. Fanioanele \fImod\fP acceptate sunt: .TP \fBMPOL_F_NUMA_BALANCING\fP (începând cu Linux 5.12) .\" commit bda420b985054a3badafef23807c4b4fa38a3dff Atunci când \fImod\fP este \fBMPOL_BIND\fP, se activează echilibrarea NUMA a nucleului pentru sarcină, dacă aceasta este acceptată de nucleu. Dacă fanionul nu este acceptat de nucleu sau este utilizat cu un \fImod\fP altul decât \fBMPOL_BIND\fP, se returnează \-1 și \fIerrno\fP este configurată la \fBEINVAL\fP. .TP \fBMPOL_F_RELATIVE_NODES\fP (începând cu Linux 2.6.26) Un argument \fInodemask\fP nevid specifică ID\-urile nodurilor care sunt relative la setul de ID\-uri ale nodurilor permise de „cpuset\-ul” curent al procesului (limitarea la subseturile de noduri de procesare și de memorie actuală a procesului). .TP \fBMPOL_F_STATIC_NODES\fP (începând cu Linux 2.6.26) Un argument \fInodemask\fP nevid specifică ID\-urile nodurilor fizice. Linux nu va repoziționa \fInodemask\fP atunci când procesul se mută într\-un context \fIcpuset\fP diferit și nici atunci când se schimbă setul de noduri permise de contextul \fIcpuset\fP curent al procesului. .P \fInodemask\fP indică o mască de biți a ID\-urilor nodurilor care conține până la \fImaxnode\fP biți. Dimensiunea măștii de biți este rotunjită la următorul multiplu de \fIsizeof(unsigned long)\fP, dar nucleul va utiliza biți numai până la \fImaxnode\fP. O valoare NULL a \fInodemask\fP sau o valoare \fImaxnode\fP de zero specifică setul gol de noduri. Dacă valoarea lui \fImaxnode\fP este zero, argumentul \fInodemask\fP este ignorat. .P Atunci când este necesară o mască de noduri \fInodemask\fP, aceasta trebuie să conțină cel puțin un nod care este activ, permis de contextul \fIcpuset\fP curent al procesului (cu excepția cazului în care este specificat fanionul de mod \fBMPOL_F_STATIC_NODES\fP) și conține memorie. Dacă \fBMPOL_F_STATIC_NODES\fP este definit în \fImod\fP și o mască de noduri \fInodemask\fP necesară nu conține noduri care sunt permise de contextul \fIcpuset\fP curent al procesului, politica de memorie revine la alocarea locală \fIlocal allocation\fP. Aceasta prevalează efectiv asupra politicii specificate până când contextul \fIcpuset\fP al procesului include unul sau mai multe noduri specificate de \fInodemask\fP. .P Argumentul \fImod\fP trebuie să includă una dintre următoarele valori: .TP \fBMPOL_DEFAULT\fP Acest mod specifică faptul că orice politică de memorie a firelor de execuție care nu este implicită este eliminată, astfel încât politica de memorie „revine” la politica implicită a sistemului. Politica implicită a sistemului este „alocare locală” \-\- adică, alocarea memoriei pe nodul CPU care a declanșat alocarea. Masca de noduri \fInodemask\fP trebuie să fie specificată ca NULL. Dacă „nodul local” nu conține memorie liberă, sistemul va încerca să aloce memorie de pe un nod „apropiat”. .TP \fBMPOL_BIND\fP Acest mod definește o politică strictă care restricționează alocarea de memorie la nodurile specificate în \fInodemask\fP. Dacă \fInodemask\fP specifică mai mult de un nod, alocările de pagini vor proveni mai întâi de la nodul cu cel mai mic ID de nod numeric, până când nodul respectiv nu conține memorie liberă. Alocările vor veni apoi de la nodul cu următorul ID de nod cel mai mare specificat în \fInodemask\fP și așa mai departe, până când niciunul dintre nodurile specificate nu conține memorie liberă. Paginile nu vor fi alocate din niciun nod care nu este specificat în \fInodemask\fP. .TP \fBMPOL_INTERLEAVE\fP .\" NOTE: the following sentence doesn't make sense in the context .\" of set_mempolicy() -- no memory area specified. .\" To be effective the memory area should be fairly large, .\" at least 1 MB or bigger. Acest mod intercalează alocările de pagini între nodurile specificate în \fInodemask\fP în ordinea numerică a ID\-ului nodului. Acest lucru optimizează lățimea de bandă în loc de latență prin repartizarea paginilor și a accesărilor de memorie la acele pagini pe mai multe noduri. Cu toate acestea, accesul la o singură pagină va fi în continuare limitat la lățimea de bandă de memorie a unui singur nod. .TP \fBMPOL_WEIGHTED_INTERLEAVE\fP (începând cu Linux 6.9) .\" commit fa3bea4e1f8202d787709b7e3654eb0a99aed758 Acest mod intercalează alocările de pagini între nodurile specificate în \fInodemask\fP în funcție de ponderile din \fI/sys/kernel/mm/mempolicy/weighted_interleave\fP. De exemplu, dacă biții 0, 2 și 5 sunt definiți în \fInodemask\fP, iar conținutul \fI/sys/kernel/mm/mempolicy/weighted_interleave/node0\fP, \fI/sys/\fP.\|.\|. \fI/node2\fP, și \fI/sys/\fP.\|.\|.\fI/node5\fP sunt 4, 7 și, respectiv, 9, atunci paginile din această regiune vor fi alocate nodurilor 0, 2 și 5 într\-un raport 4:7:9. .TP \fBMPOL_PREFERRED\fP Acest mod stabilește nodul preferat pentru alocare. Nucleul va încerca să aloce mai întâi pagini din acest nod și va reveni la nodurile „apropiate” dacă nodul preferat are puțină memorie liberă. Dacă \fInodemask\fP specifică mai mult de un ID de nod, primul nod din mască va fi selectat ca nod preferat. Dacă argumentele \fInodemask\fP și \fImaxnode\fP specifică setul gol, atunci politica specifică „alocare locală” (precum politica implicită a sistemului discutată mai sus). .TP \fBMPOL_LOCAL\fP (începând cu Linux 3.8) .\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 .\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f Acest mod specifică „alocare locală”; memoria este alocată pe nodul CPU care a declanșat alocarea („nodul local”). Argumentele \fInodemask\fP și \fImaxnode\fP trebuie să specifice setul gol. Dacă „nodul local” are puțină memorie liberă, nucleul va încerca să aloce memorie din alte noduri. Nucleul va aloca memorie din „nodul local” ori de câte ori este disponibilă memorie pentru acest nod. Dacă „nodul local” nu este permis de contextul \fIcpuset\fP curent al procesului, nucleul va încerca să aloce memorie din alte noduri. Nucleul va aloca memorie din „nodul local” ori de câte ori aceasta devine permisă de contextul \fIcpuset\fP curent al procesului. .P Politica de memorie a firelor de execuție este păstrată pe parcursul unui apel \fBexecve\fP(2) și este moștenită de firele de execuție copii create utilizând \fBfork\fP(2) sau \fBclone\fP(2). .SH "VALOAREA RETURNATĂ" În caz de succes, \fBset_mempolicy\fP() returnează 0; în caz de eroare, se returnează \-1 și \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP O parte din tot intervalul de memorie specificat de \fInodemask\fP și \fImaxnode\fP indică în afara spațiului de adrese accesibil. .TP \fBEINVAL\fP Argumentul \fImod\fP nu este valid. Sau, \fImod\fP este \fBMPOL_DEFAULT\fP și masca de noduri \fInodemask\fP nu este goală, sau \fImod\fP este \fBMPOL_BIND\fP sau \fBMPOL_INTERLEAVE\fP și \fInodemask\fP este goală. Sau, \fImaxnode\fP specifică mai mult de o pagină de biți. Sau, \fInodemask\fP specifică unul sau mai multe ID\-uri de nod care sunt mai mari decât ID\-ul maxim de nod acceptat. Sau, niciunul dintre ID\-urile de nod specificate de \fInodemask\fP nu este activ și permis de contextul \fIcpuset\fP curent al procesului, sau niciunul dintre nodurile specificate nu conține memorie. Sau argumentul \fImod\fP a specificat atât \fBMPOL_F_STATIC_NODES\fP, cât și \fBMPOL_F_RELATIVE_NODES\fP. Sau, \fBMPOL_F_NUMA_BALANCING\fP nu este acceptat de nucleu sau este utilizat cu un \fImod\fP altul decât \fBMPOL_BIND\fP. .TP \fBENOMEM\fP Nu a fost disponibilă suficientă memorie pentru nucleu. .SH STANDARDE Linux. .SH ISTORIC Linux 2.6.7. .SH NOTE Politica de memorie nu este reținută dacă pagina este transferată. Atunci când o astfel de pagină este reimportată în memoriei, aceasta va utiliza politica firului sau a intervalului de memorie care este în vigoare la momentul alocării paginii. .P Pentru informații privind suportul de bibliotecă, consultați \fBnuma\fP(7). .SH "CONSULTAȚI ȘI" \fBget_mempolicy\fP(2), \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBnuma\fP(3), \fBcpuset\fP(7), \fBnuma\fP(7), \fBnumactl\fP(8) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .