Manuel Ullmann
2016-Dec-13 22:05 UTC
[libvirt-users] virsh not detecting hugepage mount; disabled by config?
Hi,
I’m struggling with virsh not detecting my hugepage mount.
I have the following kernel command line:
BOOT_IMAGE=/vmlinuz-4.8.13-gentoo root=/dev/mapper/gensd-gentoo ro quiet
splash intel_iommu=on video=efifb:off,vesafb:off,simplefb:off
splash=verbose,theme:livedvd-aurora kvm.ignore_msrs=1
transparent_hugepage=never hugepages=3072 softlevel=qemuvm
My startup script outputs the following:
hugetlbfs /var/lib/hugetlbfs hugetlbfs
rw,relatime,pagesize=2097152,uid=77,gid=77,mode=0770 0 0
[2016.12.13 22:22:50 virsh 2808] ERROR Failed to start domain win10
[2016.12.13 22:22:50 virsh 2808] ERROR internal error: hugetlbfs
filesystem is not mounted or disabled by administrator config
virsh was unsuccessful
So hugetlbfs is definitively mounted, but virsh does either not detect
it or some magical option, that I’ve not found in a day searching for
it, disables it (the documentation could explain that better). Since the
Ubuntu guys refer to the KVM_HUGEPAGES environment, I tried adding it to
start-stop-daemon environment, but it seems non-relevant. 77 is the qemu
user id, but I’m quite sure the permission issues were excluded (tried
root permissions as well). Besides I had permission errors occasionally
occasionally and don’t have them anymore. If you could provide a hint to
the magical administrator configuration option, that would be helpful.
Tried hugeadm as well, pointing the config to the correct destination.
Thanks in advance,
Manuel
PS:
The virsh script reads like this:
#!/bin/sh
cmdline="$(cat /proc/cmdline)"
if [[ "${cmdline##* }" == "softlevel=qemuvm" ]]; then
mount -o rw,relatime,pagesize=2097152,uid=77,gid=77,mode=0770 -t
hugetlbfs hugetlbfs /var/lib/hugetlbfs
sysctl kernel.shmmax=6442450944
cat /proc/mounts | grep hugetlb >> /var/log/virsh.log
sed -i -e '/^hugetlb/{s/^/\#/}' /etc/libvirt/qemu.conf
counter=0
while [ "${counter}" -lt 10 && ! -S
/var/run/libvirt/libvirt-sock ]; do
sleep 1
counter=$(( ++counter ))
done
if [ $counter -gt 9 ]; then
echo "libvirtd socket generation timed out" >>
/var/log/virsh.log
fi
if pidof libvirtd &>/dev/null; then
LC_ALL=C /usr/bin/virsh -l /var/log/virsh.log start win10
if [ $? -gt 0 ]; then
echo "virsh was unsuccessful" >> /var/log/virsh.log
reboot
fi
else
echo "libvirtd is not started" >> /var/log/virsh.log
reboot
fi
fi
reboot is more convenient, since this is a vfio-igd passthrough vm.
Martin Kletzander
2016-Dec-14 09:32 UTC
Re: [libvirt-users] virsh not detecting hugepage mount; disabled by config?
On Tue, Dec 13, 2016 at 11:05:11PM +0100, Manuel Ullmann wrote:>Hi, > >I’m struggling with virsh not detecting my hugepage mount. > >I have the following kernel command line: >BOOT_IMAGE=/vmlinuz-4.8.13-gentoo root=/dev/mapper/gensd-gentoo ro quiet >splash intel_iommu=on video=efifb:off,vesafb:off,simplefb:off >splash=verbose,theme:livedvd-aurora kvm.ignore_msrs=1 >transparent_hugepage=never hugepages=3072 softlevel=qemuvm > >My startup script outputs the following: >hugetlbfs /var/lib/hugetlbfs hugetlbfs >rw,relatime,pagesize=2097152,uid=77,gid=77,mode=0770 0 0 >[2016.12.13 22:22:50 virsh 2808] ERROR Failed to start domain win10 >[2016.12.13 22:22:50 virsh 2808] ERROR internal error: hugetlbfs >filesystem is not mounted or disabled by administrator config >virsh was unsuccessful > >So hugetlbfs is definitively mounted, but virsh does either not detect >it or some magical option, that I’ve not found in a day searching for >it, disables it (the documentation could explain that better). Since the >Ubuntu guys refer to the KVM_HUGEPAGES environment, I tried adding it to >start-stop-daemon environment, but it seems non-relevant. 77 is the qemu >user id, but I’m quite sure the permission issues were excluded (tried >root permissions as well). Besides I had permission errors occasionally >occasionally and don’t have them anymore. If you could provide a hint to >the magical administrator configuration option, that would be helpful.Nothing magical about that. If you have no hugepages configured in qemu.conf, libvirtd will *try* to find all the mounts if running as root. The only thing is that in the error message "or" should be changed to "and", I guess.>Tried hugeadm as well, pointing the config to the correct destination. > >Thanks in advance, >Manuel > >PS: >The virsh script reads like this: >#!/bin/sh >cmdline="$(cat /proc/cmdline)" >if [[ "${cmdline##* }" == "softlevel=qemuvm" ]]; then > mount -o rw,relatime,pagesize=2097152,uid=77,gid=77,mode=0770 -t >hugetlbfs hugetlbfs /var/lib/hugetlbfsIf libvirtd starts before this ^^> sysctl kernel.shmmax=6442450944 > cat /proc/mounts | grep hugetlb >> /var/log/virsh.log > sed -i -e '/^hugetlb/{s/^/\#/}' /etc/libvirt/qemu.confor this ^^ is done, then the settings are not reflected. That's the only thing I could glean from the quick look. I bet adding 'service libvirtd restart' here helps.> counter=0 > while [ "${counter}" -lt 10 && ! -S /var/run/libvirt/libvirt-sock ]; do > sleep 1 > counter=$(( ++counter )) > done > if [ $counter -gt 9 ]; then > echo "libvirtd socket generation timed out" >> /var/log/virsh.log > fi > if pidof libvirtd &>/dev/null; then > LC_ALL=C /usr/bin/virsh -l /var/log/virsh.log start win10 > if [ $? -gt 0 ]; then > echo "virsh was unsuccessful" >> /var/log/virsh.log > reboot > fi > else > echo "libvirtd is not started" >> /var/log/virsh.log > reboot > fi >fi > >reboot is more convenient, since this is a vfio-igd passthrough vm. > > >_______________________________________________ >libvirt-users mailing list >libvirt-users@redhat.com >https://www.redhat.com/mailman/listinfo/libvirt-users
Reasonably Related Threads
- Re: virsh not detecting hugepage mount; disabled by config?
- about sharing the hugepage memory segment between the host and the container
- HugePages - can't start guest that requires them
- Re: HugePages - can't start guest that requires them
- PATCH: Hugepage support for Domains booting with 4KB pages