ALLOC_HUGEPAGES
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
ERREURS
CONFORMITÉ
FICHIERS
NOTES
TRADUCTION
NOM
alloc_hugepages, free_hugepages - Allouer ou libérer des pages immenses.
SYNOPSIS
void *alloc_hugepages(int cle, void *adr, size_t lg, int prot, int attr);
int free_hugepages(void *adr);
DESCRIPTION
Les appels-système
alloc_hugepages
et
free_hugepages
ont été introduits dans Linux 2.5.36 et retirés à nouveau dans le 2.5.54.
Ils n'existent que sur i386 et ia64 (compilation avec l'option CONFIG_HUGETLB_PAGE).
Dans Linux 2.4.20 le numéro d'appel-système existe, mais renvoie toujours ENOSYS.
Sur un i386, le mécanisme matériel de gestion mémoire manipule des pages ordinaires (4 Ko) et des
pages immenses (2 à 4 Mo). De même l'ia64 connaît des pages immenses de diverses
tailles. Ces appels-système servent à projeter ces pages immenses dans l'espace
mémoire du processus ou à les libérer.
Les pages immenses sont verrouillées en mémoire et jamais swappées.
Le paramètre
cle
est un identificateur. Lorsqu'il vaut zéro, les pages sont privées et non héritées
par les processus descendants.
Lorsqu'il est positif, les pages sont partagées avec les autres applications utilisant la même
cle,
et héritées par les processus enfants.
Le paramètre
adr
de
free_hugepages()
indique quelle page doit être libérée - il a été renvoyé lors de
l'appel
alloc_hugepages().
(La mémoire n'est véritablement libérée que lorsque tous ses utilisateurs la relâchent).
Le paramètre
adr
de
alloc_hugepages()
est un désir que le noyau peut suivre ou non.
Les adresses doivent être correctement alignées.
Le paramètre
lg
est la taille du segment désiré. Il doit s'agir d'un multiple
de la taille d'une page immense.
Le paramètre
prot
indique le type de protection du segment. Il s'agit
d'une association de PROT_READ, PROT_WRITE, PROT_EXEC.
Le paramètre
flag
est ignoré, sauf si
cle
est positive. Dans ce cas, si
flag
vaut IPC_CREAT, alors un nouveau segment de page énorme est créé si
aucun n'existe avec cette clé. Sinon, l'erreur ENOENT est renvoyé
si aucun segment correspondant à la clé n'existe.
.SHVALEUR RENVOYÉE
S'il réussit
alloc_hugepages
renvoie l'adresse du segment alloué, et
free_hugepages
renvoie zéro. En cas d'erreur, ils renvoient -1 et remplissent
errno
avec le code d'erreur.
ERREURS
- ENOSYS
-
L'appel-système n'est pas supporté par ce noyau.
CONFORMITÉ
Ces appels n'existent que dans les noyaux Linux 2.5.36 - 2.5.54.
Ils sont spécifiques à Linux sur processeurs Intel, et ne doivent pas être
employés sur des programmes conçus pour être protables. De plus, les numéros
de ces appels-système ont été marqués comme libres, et les programme les
utilisant risquent de se comporter de manière imprévisible dans l'avenir.
FICHIERS
/proc/sys/vm/nr_hugepages
Nombre de pages énormes configurées.
Peut être lu ou écrit.
/proc/meminfo
Indique le nombre de pages énormes configurés, et leurs tailles
dans les trois variables HugePages_Total, HugePages_Free, Hugepagesize.
NOTES
Ces appels-système ont disparu. Maintenant, le système de fichiers hugetblfs peut
être employé à leur place. La mémoire correspondant aux pages énormes (si le
processeur les supportent) peut être obtenue par un mmap() des fichiers de
ce système de fichiers virtuel.
Le nombre maximal de pages énormes peut être indiqué en utilisant l'argument
hugepages=
au boot.
TRADUCTION
Christophe Blaess, 1996-2003.
|