alloc_hugepages, free_hugepages -
выделяет
или
освобождает
огромные
страницы
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).
The system calls
alloc_hugepages() and
free_hugepages() were
introduced in Linux 2.5.36 and removed again in Linux 2.5.54. They existed
only on i386 and ia64 (when built with
CONFIG_HUGETLB_PAGE). In Linux
2.4.20, the syscall numbers exist, but the calls fail with the error
ENOSYS.
На i386
аппаратура
управления
памятью
умеет
работать с
обычными
страницами
(4 КиБ) и
огромными
страницами
(2 или 4 МиБ).
Подобно
этому, ia64
умеет
работать с
огромными
страницами
разных
размеров.
Эти
системные
вызовы
служат для
отображения
огромных
страниц в
память
процесса
или её
освобождения.
Огромные
страницы
блокируются
в памяти и
не могут
быть
вытеснены
в
пространство
подкачки.
Аргумент
key
служит
идентификатором.
При
нулевом
значении
страницы
считаются
частными и
не
наследуются
потомками.
При
положительном
значении
страницы
совместно
используются
несколькими
приложениями
посредством
одинакового
key и
наследуются
процессами-потомками.
Аргумент
addr
в
free_hugepages()
указывает
какую
страницу
нужно
освободить:
его
значением
является
результат
вызова
alloc_hugepages().
(Память, на
самом деле,
освобождается
только
когда все
пользователи
её
освободят.)
Аргумент
addr
в
alloc_hugepages() — это
подсказка,
которой
ядро может
и не
воспользоваться.
Адреса
должны
быть
выровнены
соответствующим
образом.
Аргумент
len
задаёт
длину
требуемого
сегмент. Он
должен
быть
кратен
размеру
огромной
страницы.
Аргумент
prot
определяет
тип защиты
сегмента
памяти.
Может быть
указано
одно из
значений:
PROT_READ,
PROT_WRITE,
PROT_EXEC.
Аргумент
flag
игнорируется,
если
key не
является
положительным.
В этом
случае,
если
flag —
IPC_CREAT,
то
создаётся
новый
сегмент
огромной
страницы,
если не
существует
ни один из
указанных
идентификаторов.
Если флаг
не задан, то
возвращается
ENOENT, если не
существует
сегмента с
заданным
идентификатором.
On success,
alloc_hugepages() returns the allocated virtual address, and
free_hugepages() returns zero. On error, -1 is returned, and
errno is set to indicate the error.
- ENOSYS
- Системный
вызов не
поддерживается
данным
ядром.
- /proc/sys/vm/nr_hugepages
- Количество
настроенных
страниц hugetlb.
Доступен
для чтения
и записи.
- /proc/meminfo
- Выдаёт
информацию
о числе
настроенных
страниц hugetlb и
их размере
в трёх
переменных:
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.
Максимальное
число
огромных
страниц
можно
задать в
параметре
загрузки
ядра
hugepages=.
Русский
перевод
этой
страницы
руководства
был сделан
Dmitry Bolkhovskikh <
[email protected]> и Yuri Kozlov
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]