Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   [решено] конфигурация hugepages (http://forum.oszone.net/showthread.php?t=289478)

romez777 15-10-2014 22:25 2415929

конфигурация 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, возникает такая же ошибка. Что я делаю не так?

CJ F.A.N. 16-10-2014 07:47 2416052

Цитата:

Цитата romez777
Все сделал по написанному »

написанному где? Более подробную инфу дайте

SharkyUA 16-10-2014 12:29 2416149

Код:

# echo 512 > /proc/sys/vm/nr_hugepages
Или же
Код:

# sysctl -w vm.nr_hugepages=512

romez777 17-10-2014 01:49 2416527

Я обновил свое исходное сообщение и добавил побольше деталей проблемы.

romez777 18-10-2014 01:00 2416894

Я думаю, я нашел причину. Если посмотреть код в 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.

Время: 21:00.
© OSzone.net 2001-