alloc_hugepages, free_hugepages - asigna o libera páginas de gran
tamaño
void *syscall(SYS_alloc_hugepages, int key, void addr[.len], size_t len,
int prot, int flag);
int syscall(SYS_free_hugepages, void *addr);
Note: glibc provides no wrappers for these system calls, necessitating
the use of
syscall(2).
Las llamadas al sistema
alloc_hugepages() y
free_hugepages()
fueron introducidas en Linux 2.5.36 y eliminadas de nuevo en la versión
2.5.54. Existían sólo para arquitecturas i386 e ia64 (cuando se
compilaba con la opción
CONFIG_HUGETLB_PAGE). En Linux 2.4.20
existen los números de las llamadas al sistemas, pero las llamadas
devuelven
ENOSYS.
En la arquitectura i386 el hardware de gestión de la memoria maneja
páginas ordinarias (4 KiB) y páginas grandes (2 o
4 MiB). De manera similar, la arquitectura ia64 maneja páginas
grandes de distintos tamaños. Estas llamadas al sistema sirven para
ubicar páginas de gran tamaño en la memoria del proceso o para
liberarlas. Las páginas grandes están fijas en memoria, y no son
intercambiadas (swapped).
El argumento
key es un identificador. Cuando es cero las páginas
son privadas, y no son heredadas por los hijos. Cuando es positivo las
páginas son compartidas con otras aplicaciones usando el mismo
identificador
key, y heredadas por los procesos hijo.
The
addr argument of
free_hugepages() tells which page is being
freed: it was the return value of a call to
alloc_hugepages(). (The
memory is first actually freed when all users have released it.) The
addr argument of
alloc_hugepages() is a hint, that the kernel
may or may not follow. Addresses must be properly aligned.
El parámetro
len es la longitud del segmento requerido. Debe ser
un múltiplo del tamaño de la página gigante.
El parámetro
prot especifica la protección de memoria del
segmento. Puede ser
PROT_READ,
PROT_WRITE o bien
PROT_EXEC.
The
flag argument is ignored, unless
key is positive. In that
case, if
flag is
IPC_CREAT, then a new huge page segment is
created when none with the given key existed. If this flag is not set, then
ENOENT is returned when no segment with the given key exists.
En caso de éxito,
alloc_hugepages() devuelve la dirección
virtual asignada, y
free_hugepages() devuelve cero. En caso de error,
se devuelve -1, y se define
errno para indicar el tipo de error.
- ENOSYS
- La llamada al sistema no está soportada por este
núcleo.
- /proc/sys/vm/nr_hugepages
- Número de páginas hugetlb configuradas. Puede
ser leído y escrito.
- /proc/meminfo
- Proporciona información del número de
páginas hugetlb configuradas y de su tamaño en las tres
variables HugePages_Total, HugePages_Free, Hugepagesize.
These extinct system calls were specific to Linux on Intel processors.
These system calls are gone; they existed only in Linux 2.5.36 through to Linux
2.5.54. Now the hugetlbfs filesystem can be used instead. Memory backed by
huge pages (if the CPU supports them) is obtained by using
mmap(2) to
map files in this virtual filesystem.
El número máximo de páginas grandes puede especificarse
usando el parámetro
hugepages= en el arranque.
La traducción al español de esta página del manual fue
creada por Miguel Pérez Ibars <
[email protected]> y Marcos
Fouces <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]