 |
|
конфигурация hugepages
Приветствую,
Есть Fedora 20 с 8G памяти. Понадобилось настроить поддержку hugepages. Все сделал по написанному и добавил следующие параметры ядру:
Код:
default_hugepagesz=1G hugepagesz=1G hugepages=2
HugeTLB монтируется автоматически:
Код:
% mount | grep ^huge
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
%
После ребута все выглядит вроде нормально:
Код:
% dmesg | grep HugeTLB
HugeTLB registered 1 GB page size, pre-allocated 2 pages
% grep -E ^"(Mem|Huge)" /proc/meminfo
MemTotal: 8137732 kB
MemFree: 5359672 kB
MemAvailable: 5707656 kB
HugePages_Total: 2
HugePages_Free: 2
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
%
То есть количество свободной памяти достаточно для добавления еще хотя бы одной страницы, однако облом-с:
Код:
% echo 3 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
-bash: echo: write error: Invalid argument
%
либо
Код:
% echo 3 > /proc/sys/vm/nr_hugepages
-bash: echo: write error: Invalid argument
%
Также если попробовать понизить число страниц до 1, возникает такая же ошибка. Что я делаю не так?
|
Цитата:
Цитата romez777
Все сделал по написанному »
|
написанному где? Более подробную инфу дайте
|
Код:
# echo 512 > /proc/sys/vm/nr_hugepages
Или же
Код:
# sysctl -w vm.nr_hugepages=512
|
Я обновил свое исходное сообщение и добавил побольше деталей проблемы.
|
Я думаю, я нашел причину. Если посмотреть код в mm/hugetlb.c:
Код:
#if defined(CONFIG_CMA) && defined(CONFIG_X86_64)
...
static inline bool gigantic_page_supported(void) { return true; }
#else
static inline bool gigantic_page_supported(void) { return false; }
...
#endif
...
static int hugetlb_sysctl_handler_common(...)
{
...
if (write && hstate_is_gigantic(h) && !gigantic_page_supported())
return -EINVAL;
...
}
то получается что ядро всегда будет возвращать EINVAL для этой операции если только CONFIG_CMA не включен, а в ядре поставляемом c Fedora 20, эта опция отключена.
|
Время: 21:00.
© OSzone.net 2001-