ОБНОВЛЕНИЕ: я переключил огромный размер страницы по умолчанию на 2 МБ и перезагрузился, чтобы убедиться, что это всегда был нестандартный размер, который не срабатывал, и теперь я могу выделить из обоих пулов. Я в замешательстве, но, возможно, делаю успехи.
Я безуспешно пытался получить shmget и mmap для выделения из пула огромных страниц не по умолчанию на ядре 4.13.0-32-generic. Я настроил огромные страницы 2M и 1G. Со страницей 1G в качестве размера по умолчанию этот вызов завершится успешно:
addr = mmap(0, byteAmount, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_HUGETLB|MAP_ANONYMOUS|MAP_HUGE_1GB, -1, 0);
но это не удастся с Cannot allocate memory
:
addr = mmap(0, byteAmount, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_HUGETLB|MAP_ANONYMOUS|MAP_HUGE_2MB, -1, 0);
огромныйадм --объясните вывод:
Total System Memory: 32004 MB
Mount Point Options
/dev/hugepages rw,relatime,pagesize=1024M
/dev/hugepages2MB rw,relatime,pagesize=2M
Huge page pools:
Size Minimum Current Maximum Default
2097152 1024 1024 1024
1073741824 1 1 1 *
Huge page sizes with configured pools:
2097152
1073741824
The /proc/sys/vm/min_free_kbytes of 67584 is too small. To maximiuse efficiency
of fragmentation avoidance, there should be at least one huge page free per zone
in the system which minimally requires a min_free_kbytes value of 57671680
A /proc/sys/kernel/shmmax value of 6442450944 bytes may be sub-optimal. To maximise
shared memory usage, this should be set to the size of the largest shared memory
segment size you want to be able to use. Alternatively, set it to a size matching
the maximum possible allocation size of all huge pages. This can be done
automatically, using the --set-recommended-shmmax option.
The recommended shmmax for your currently allocated huge pages is 3221225472 bytes.
To make shmmax settings persistent, add the following line to /etc/sysctl.conf:
kernel.shmmax = 3221225472
hugeadm:WARNING: There is no swap space configured, resizing hugepage pool may fail
hugeadm:WARNING: Use --add-temp-swap option to temporarily add swap during the resize
To make your hugetlb_shm_group settings persistent, add the following line to /etc/sysctl.conf:
vm.hugetlb_shm_group = 0
Note: Permanent swap space should be preferred when dynamic huge page pools are used.
Цель состоит в том, чтобы иметь возможность использовать комбинацию страниц размером 2 МБ и 1 ГБ, чтобы максимизировать количество попаданий TLB. Любая помощь очень ценится!