如何检查Linux内核KVM tdp_mmu默认启用状态 运行时可否重配置
KVM tdp_mmu 参数核查与配置说明
根据公开的Linux内核补丁记录,KVM已在对应版本中将tdp_mmu参数调整为默认启用,以下是相关技术问题的实操解答:
1. 核查当前运行内核是否启用tdp_mmu的方法
可通过两种方式核查,覆盖静态配置、运行时生效两种状态:
- 读取模块静态参数值
Intel平台执行命令:cat /sys/module/kvm_intel/parameters/tdp_mmu
AMD平台执行命令:cat /sys/module/kvm_amd/parameters/tdp_mmu
命令返回Y代表参数配置为启用,返回N代表配置为禁用。如果对应路径不存在,说明当前内核版本未合入TDP MMU功能代码,不存在该配置项。 - 核查运行时实际生效状态
若系统已运行KVM虚拟机,可通过debugfs读取实际运行状态(debugfs默认挂载在/sys/kernel/debug路径下),执行命令:cat /sys/kernel/debug/kvm/*/tdp_mmu_enabled
返回值为1代表TDP MMU已在运行中实际生效,返回0代表未生效。
注:上游5.14及以上版本内核默认开启该参数,部分发行版若向后移植了相关补丁,更低版本的内核也可能支持该功能。
2. 运行中CentOS/Ubuntu系统的tdp_mmu参数重配置说明
tdp_mmu是KVM架构模块的加载期参数,不支持在模块已加载、且有虚拟机运行的状态下直接动态修改,但可以通过两种方式完成重配置,CentOS、Ubuntu系统的操作逻辑通用:
- 临时配置(无需重启,适用于无业务运行的测试场景)
操作前必须关停所有运行中的KVM虚拟机,否则无法卸载KVM内核模块。依次执行以下命令重载模块并指定参数值(以Intel平台为例,启用设为1,禁用设为0;AMD平台将kvm_intel替换为kvm_amd即可):
操作完成后参数立即生效,重新启动虚拟机即可使用对应配置,该配置在系统重启后会失效。modprobe -r kvm_intel kvm modprobe kvm modprobe kvm_intel tdp_mmu=1 - 永久配置(重启后长期生效)
通过modprobe配置文件固化参数,操作步骤如下:- 新建模块配置文件:
/etc/modprobe.d/kvm-tdp-mmu.conf - 根据CPU平台写入配置内容:
- Intel平台:
options kvm_intel tdp_mmu=Y(启用),要禁用则将值改为N - AMD平台:
options kvm_amd tdp_mmu=Y(启用),要禁用则将值改为N
- Intel平台:
- 重新生成引导阶段的模块加载镜像,保证开机时能读取到该配置:
- Ubuntu/Debian系执行命令:
update-initramfs -u - CentOS/RHEL系执行命令:
dracut -f
- Ubuntu/Debian系执行命令:
- 重启系统后配置即可永久生效。
- 新建模块配置文件:
注意:如果系统内核版本过旧、未合入TDP MMU相关代码,添加上述配置后加载模块时会报"unknown parameter"类错误,需要先升级到支持该功能的内核版本再做配置。
内容的提问来源于stack exchange,提问作者mounir boukhalfa
相关产品推荐
相关产品推荐

