Linux kernel 使用不带libvirt的ubuntu在qemu中定义hugepages

Linux kernel 使用不带libvirt的ubuntu在qemu中定义hugepages,linux-kernel,qemu,huge-pages,Linux Kernel,Qemu,Huge Pages,我正在使用qemu,使用kvm并加载Ubuntu18.04映像,qemu使用以下命令加载: qemu-system-x86_64 -boot c -m 16G -smp 4 -vnc :0 -enable-kvm -drive if=virtio,file=ubuntu.qcow2,cache=none 我不使用libvirt 我需要将hugepages从默认的2048kb更改为1GB。 我将主机虚拟机配置为支持此大小 配置: cat /proc/meminfo | grep Huge Ano

我正在使用qemu,使用kvm并加载Ubuntu18.04映像,qemu使用以下命令加载:

qemu-system-x86_64 -boot c -m 16G -smp 4 -vnc :0 -enable-kvm -drive if=virtio,file=ubuntu.qcow2,cache=none
我不使用libvirt

我需要将hugepages从默认的2048kb更改为1GB。 我将主机虚拟机配置为支持此大小

配置:

cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:      13
HugePages_Free:       13
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:    1048576 kB
Hugetlb:        13631488 kB
在ubuntu中,我配置了
/etc/default/grub
并补充说
GRUB\u CMDLINE\u LINUX=“default\u hugepagesz=1G hugepagesz=1G hugepages=40”
然后跑

grub-mkconfig -o /boot/grub/grub.cfg 
执行: 在qemu加载后,我在终端中运行以下命令:

cat /proc/meminfo | grep Huge 
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
**Hugepagesize:       2048 kB**

cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-4.15.0-137-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro default_hugepagesz=1G hugepagesz=1G hugepages=40 maybe-ubiquity
有人知道如何在这种配置中将巨大的页面定义为1gb吗?

我解决了这个问题。 在qemu-system-x86_64中,您可以编写-cpu帮助,然后可以看到所有受支持的cpu和其他标志。 在我的例子中,我添加了“-cpu qemu64,pdpe1gb”,然后qemu支持巨大的页面