Главная » 2017 » Ноябрь » 17 » man 2 alloc_hugepages
01:17
man 2 alloc_hugepages

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


alloc_hugepages, free_hugepages - выделяет или освобождает огромные страницы



ОБЗОР


void *alloc_hugepages(int key, void *addr, size_t len,
int prot, int flag);

int free_hugepages(void *addr);



ОПИСАНИЕ


Системные вызовы alloc_hugepages() и free_hugepages() появились в Linux 2.5.36 и
удалены в 2.5.54. Они существовали только на архитектурах i386 и ia64 (при сборке
с параметром CONFIG_HUGETLB_PAGE). В Linux 2.4.20 такие номера системных вызовов
остались, но сами вызовы завершаются с ошибкой 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, если не существует сегмента с заданным идентификатором.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении alloc_hugepages() возвращает выделенный виртуальный адрес,
а free_hugepages() возвращает ноль. При ошибке возвращается -1, а errno
устанавливается соответствующим образом.



ОШИБКИ


ENOSYS Системный вызов не поддерживается данным ядром.



ФАЙЛЫ


/proc/sys/vm/nr_hugepages Количество настроенных страниц hugetlb. Доступен для
чтения и записи.

/proc/meminfo Выдаёт информацию о числе настроенных страниц hugetlb и их размере в
трёх переменных: HugePages_Total, HugePages_Free, Hugepagesize.
с помощью mmap(2) в отображаемые файлы этой виртуальной файловой системе.

Максимальное число огромных страниц можно задать в параметре загрузки ядра
hugepages=.



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 165 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar