国贸网站建设,wordpress谷歌字体大小,甜点网站里的新闻资讯怎么做,登陆不了建设银行网站(持续更新~)
本文主要用于记录在操作libvirt qemu kvm过程中遇到的问题及原因分析。
Hugepage
让qemu使用大页可以减少tdp的size#xff0c;一定程度上可以提高性能#xff1b;使用大页可以用memfd或者file backend。
memfd
操作步骤如下#xff1a;
在系统中reserv…(持续更新~)
本文主要用于记录在操作libvirt qemu kvm过程中遇到的问题及原因分析。
Hugepage
让qemu使用大页可以减少tdp的size一定程度上可以提高性能使用大页可以用memfd或者file backend。
memfd
操作步骤如下
在系统中reserve大页命令参考http://t.csdnimg.cn/PPetb例如 echo 16 /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages 重新挂载/dev/hugepages使其pagesize为1g mount -o remount,pagesize1g /dev/hugepages 重启libvirtd systemctl restart libvirtd 修改虚拟机xml文件如下 memory unitKiB16777216/memorycurrentMemory unitKiB16777216/currentMemorymemoryBackinghugepages/source typememfd/access modeshared//memoryBacking
启动虚拟机之后我们会看到memfd文件 之所以会显示deleted是memfd创建文件的方式导致的参考内核代码
proc_pid_readlink()- do_proc_readlink()- d_path()---if (unlikely(d_unlinked(path-dentry)))prepend(b, (deleted), 11);elseprepend(b, , 1);---static inline int d_unlinked(const struct dentry *dentry)
{return d_unhashed(dentry) !IS_ROOT(dentry);
}SYSCALL_DEFINE2(memfd_create)- hugetlb_file_setup()- alloc_file_pseudo()---path.dentry d_alloc_pseudo(mnt-mnt_sb, this);...path.mnt mntget(mnt);d_instantiate(path.dentry, inode);---
其并没有调用d_splice_alias()、d_add()接口所以是unhashed的另外初次测试时并没有step 2导致内存分配失败原因是libvirt传给qemu的hugetlbszie是2M而我预留的是1G追查libvirt代码原因在于
virQEMUDriverConfigNew()
---/* For privileged driver, try and find hugetlbfs mounts automatically.* Non-privileged driver requires admin to create a dir for the* user, chown it, and then let user configure it manually. */if (privileged virFileFindHugeTLBFS(cfg-hugetlbfs, cfg-nhugetlbfs) 0) {...}
---
libvirt会参考系统中挂载的hugetlbfs的pagesize以此作为参考。