概述
本文档提供了Virt-awaresched在常规场景下的用户指南。
Virt-aware Scheduler(VSched)包含vas-daemon用户态服务和前端CLI工具两部分。
- 虚拟化感知调度服务进程(vas-daemon)依赖libvirt监控虚拟机事件,对已创建和服务启动后创建的范围绑核虚拟机进行vCPU1:1绑核调度,尽可能将vCPU线程重分配到同一cluster的CPU上,并定时进行cluster间CPU碎片资源整理。vas-daemon服务启动后,采集环境CPU拓扑信息,侦听虚拟机事件和CLI指令,定时整理CPU碎片资源。
- 前端CLI工具(vasctl)支持使用指令查询虚拟机vCPU绑定信息,手动触发重调度,修改配置。vasctl执行时,进行指令解析并完成参数校验,通过校验后,与服务端建链并转发指令,返回执行结果。
特性描述
VSched基于CPU cluster拓扑、超线程调度、动态绑核,为范围绑核的虚拟机vCPU线程选择合适的CPU,尽可能地共享L3 cache,减少vcpu分布跨cluster的情况,提高虚拟机vcpu切换时cache命中率,防止vCPU线程在CPU间无意义的漂移导致的性能下降,提高虚拟化线性度。主要包含以下功能:
- CPU分配与碎片整理:VSched基于CPU cluster拓扑在虚拟机绑核范围内为vCPU选择一个合适的CPU,以尽可能地减少虚拟机跨cluster,在虚拟机销毁时回收CPU,并进行基于cluster的碎片整理。
- 静态绑核模式:VSched为vCPU线程选择一个CPU,进行绑核,静态绑核后vCPU线程只能在该核运行,如果设置了SMT参数,VSched不区分CPU是物理核还是超线程。
- 动态绑核模式:VSched为vCPU线程选择一个优选核后,进行动态绑核,当优选核CPU使用率高于阈值时,vCPU线程会迁移到范围绑核内其它性能更优的核上,当优选核CPU使用率低于阈值时,vCPU线程又会回到优选核,而且它考虑了超线程调度,会让vCPU线程尽可能运行在物理核上,DA_UTIL_TASKGROUP控制优选核CPU使用率计算方式,开启时表示基于任务组(taskgroup)的优选核CPU利用率,关闭时表示基于优选核CPU总利用率。动态绑核需要内核支持潮汐亲和特性,并与组调度配合使用。
价值优势
针对鲲鹏920新型号处理器,Virt-awaresched在单虚拟机跨Cluster绑核场景与多虚拟机场景中,均有效提升了性能。
关键技术
Virt-awaresched基于鲲鹏微架构,与硬件TLBi广播优化相结合,实现虚拟化感知调度,提升虚拟化线性度。
约束限制
- 不支持主机(host)和客户机(guest)CPU热插拔。
- 不支持虚拟机vCPU配置特殊的绑核关系,一般推荐按NUMA粒度绑核,或默认不设置绑核,或vCPU绑核到同一范围:如8~31。
- VSched设置绑核可能会与cgroup资源、libvirt存在不一致,如VSched为vCPU绑核,cgroup、libvirt可能不感知。
- 静态绑核模式:客户需要根据实际业务指定是否设置SMT选项,开启SMT选项后vCPU选核绑定时不区分该核是空闲物理核还是超线程,在某些场景下可能不能充分利用空闲物理核。
- 动态绑核模式:动态绑核CPU使用率迁移阈值或动态绑核CPU使用率计算方式不合理,在某些场景可能导致性能有所下降。如果虚拟机vCPU使用率一直处于100%而不进入睡眠唤醒流程,此时若对vCPU线程所在核加压到85%以上,因内核调度可能导致vcpu线程不会迁移到其它核。
- 此版本暂不支持虚拟机vCPU超分场景。
- VSched资源占用率:
- 非频繁重启的长稳运行时CPU平均占用率 <= 1%。
- 业务运行时,CPU最大占用率<=100%;内存占用率 <= 128M。
父主题: Virt-awaresched 用户指南