鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

配置虚拟机缓存

拉起虚拟机可以通过libvirt,也可以通过QEMU命令。下面将针对两种拉起虚拟机的方式的缓存大小配置进行介绍。

通过libvirt拉起虚拟机

采用libvirt拉起虚拟机的方式,需要在虚拟机的xml配置文件中修改缓存相关配置。

修改虚拟机xml文件后,需要重新拉起虚拟机,配置才生效。

  • l1缓存为指令-数据分离结构时(比如ARM架构),配置如下。
    1
    2
    3
    4
    5
    6
    7
    8
        ... 
        <cpu mode='host-passthrough'>
            <cacheinfo cache='l1d' size='<l1d缓存大小>'/> //示例 32768
            <cacheinfo cache='l1i' size='<l1i缓存大小>'/> //示例 32768
            <cacheinfo cache='l2' size='<l2缓存大小>'/> //示例 1048576
            <cacheinfo cache='l3' size='<l3缓存大小>'/> //示例 50331648
        </cpu>
        ... 
    
  • l1缓存为统一缓存结构时,配置如下。
    1
    2
    3
    4
    5
    6
    7
      ... 
        <cpu mode='host-passthrough'>
            <cacheinfo cache='l1' size='<l1缓存大小>'/> //示例 32768
            <cacheinfo cache='l2' size='<l2缓存大小>'/> //示例 1048576
            <cacheinfo cache='l3' size='<l3缓存大小>'/> //示例 50331648
        </cpu>
        ...
    

(可选)通过QEMU命令或Device Tree拉起虚拟机

采用QEMU命令或Device Tree拉起虚拟机,需要在QEMU命令中修改缓存相关配置。

  • l1缓存为指令-数据分离结构时(比如ARM架构),配置如下。
    1
    2
    3
    4
    5
    -machine virt,\
    smp-cache.0.cache=l1i,smp-cache.0.size=<l1i缓存大小>,\ //示例 32768
    smp-cache.1.cache=l1d,smp-cache.1.size=<l1d缓存大小>,\ //示例 32768
    smp-cache.2.cache=l2,smp-cache.2.size=<l2缓存大小>,\  //示例 1048576
    smp-cache.3.cache=l3,smp-cache.3.size=<l3缓存大小> \ //示例 50331648
    
  • l1缓存为统一缓存结构时,配置如下。
    1
    2
    3
    4
    -machine virt,\
    smp-cache.0.cache=l1,smp-cache.0.size=<l1缓存大小>,\ //示例 32768
    smp-cache.2.cache=l2,smp-cache.2.size=<l2缓存大小>,\ //示例 1048576
    smp-cache.3.cache=l3,smp-cache.3.size=<l3缓存大小> \ //示例 50331648
    
  • 此处配置的l1i缓存大小、l1d缓存大小、l2缓存大小和l3缓存大小为虚拟机中看到的缓存大小。为了保证准确,需要确认与虚拟机实际使用的缓存大小一致。
  • 如果l1缓存为指令-数据分离结构,应配置“l1d”和“l1i”,否则配置“l1”。
  • 设置缓存的大小必须大于0。