Я пытаюсь найти огромные страницы для использования KVM в Ubuntu 20.04.
Если я изменю количество страниц размером 2048 КиБ (размер по умолчанию), я увижу, что это отражено в /proc/meminfo
:~$ echo 0 |sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
0
:~$ cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 50331648 kB
:~$ echo 512 |sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
512
:~$ cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 512
HugePages_Free: 512
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 51380224 kB
:~$
. Однако, когда я изменяю количество страниц размером 1 ГБ, я не вижу ничего, что могло бы отразиться тот.
:~$ echo 0 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
0
:~$ cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 512
HugePages_Free: 512
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 51380224 kB
:~$ echo 16 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
16
:~$ cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 512
HugePages_Free: 512
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 51380224 kB
Насколько я понимаю, это означает, что моя система поддерживает огромные страницы объемом 1 ГБ, верно?
ls /sys/kernel/mm/hugepages
hugepages-1048576kB hugepages-2048kB
Страницы размером 1 Гб перечислены где-то еще? Могу ли я проверить их статус?
Редактировать: благодаря @Krackout я могу видеть свои огромные страницы объемом 1 ГБ, но я все еще не понимаю, какой документации я вообще должен придерживаться:
Меня смущают различные процедуры настройки и мониторинга огромных страниц. Я вроде бы заработал, но мне еще совсем немного непонятно.
Основные ресурсы:
Каждая из приведенных выше ссылок описывает частично перекрывающиеся процедуры. Кажется, что различия основаны на ядре и дистрибутиве, но мне не ясно, в чем именно они заключаются, и я не могу найти это нигде четко изложенным.
В моей установке Ubuntu 20.04 для меня работает следующее: в crontab -e
:
@reboot echo 64 | sudo tee /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
@reboot mount -t hugetlbfs -o pagesize=1G none /dev/hugepages
После чего я могу запустить виртуальную машину KVM в virt-manager, содержащую следующий XML:
<memoryBacking>
<hugepages>
<page size='1048576' unit='KiB'/>
</hugepages>
</memoryBacking>
Таким образом, то, что я смог сделать, не совсем то, что сказал любой из гидов.
В Debian Linux необходимо вставить параметр ядра,hugepagesz=1G
(и, конечно же, перезагрузить ). Вы также можете установить пакет libhugetlbfs-bin
и просмотреть информацию с помощью команды hugeadm
. Вики-страница Debian на hugepades должна относиться к Ubuntu, основанной на Debian -.