配置虚拟机缓存
拉起虚拟机可以通过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。
父主题: 使能与验证