kvm下虚机使用dimm内存设备

kvm下的虚机在qemu和libvirt处默认使用balloon方式的内存,还可以支持使用dimm设备内存,本文介绍如何配置虚机使用dimm设备。
Linux下对虚机的管理通常使用libvirt,虚机的配置以xml文件格式保存,所以需修改xml文件。
1.在虚机xml文件的memory字段处配置maxMemory,以限制虚机总内存大小和可插入dimm设备的slot数。

12524288

2.在cpu字段处增加虚机numa配置,并指定虚机内存大小。

  为虚机配置numa
 

3.device字段配置dimm设备

  物理机侧的配置,可选项,不指定的话默认采用numatune的配置
     设置后忽略主机内存默认的页大小
   1-3  从指定numa节点分配内存
 
   虚机侧的配置,指定插入内存设备的大小及虚机中的numa节点
   524287
   1
   


4.支持情况说明
对于dimm设备可以创建虚机时指定配置或是以
device方式virsh attach-device热插给虚机使用,
qemu命令行中有-device pc-dimm,node=0,
memdev=memdimm1,id=dimm1字段,表示使用dimm设备。
Qemu和libvirt将dimm设备配置给虚机之后,虚机操作系统本身也要识别到该设备才能正常使用,如果在虚机系统中free看到内存没有包含dimm设备的大小,可进行如下操作:
到/sys/devices/system/memory/下面检查每个memory下面的state是否为online,主要针对memory32之后的如:
[root@localhost memory]# cat memory32/state 
offline
[root@localhost memory]#
这是系统内核编译时决定对于热插内存是否默认为online,如果为offline,则需手动执行echo online > memory32/state。
详见:https://www.kernel.org/doc/Documentation/memory-hotplug.txt
设置online后再用free查看内存会发现已经识别到dimm设备的内存,虚机可以正常使用该部分内存。  
如果虚机系统是64位的,并且创建虚机时配置的内存小于4G,则需要在grub里面设置iommu=soft来开启IOMMU以支持虚机系统使用dimm设备的内存。
检查是否开启IOMMU:
[root@localhost memory]# dmesg|grep SWIO
[0.522781] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) 
详见:https://www.kernel.org/doc/Documentation/x86/x86_64/boot-options.txt

你可能感兴趣的:(kvm下虚机使用dimm内存设备)