430 likes | 636 Views
虚拟化系统资源管理 Carl Waldspurger VMware R&D. 虚拟化资源管理. 物理资源 实际宿主机硬件 处理器,内存, I/O 设备,等。 虚拟资源 虚拟客户机硬件抽象 处理器,内存, I/O 设备,等。 资源管理 把虚拟资源映射到物理资源 虚拟机之间复用硬件 基于管理策略管理资源的竞争. 资源管理目标. 性能隔离 防止虚拟机独占资源 保证可期的服务速度 高效利用 充分利用空闲资源 适度性能降低下的资源过载使用 易于管理 灵活的动态划分 SLA ( Service Level Agreement )的绝对满足
E N D
虚拟化资源管理 • 物理资源 • 实际宿主机硬件 • 处理器,内存,I/O设备,等。 • 虚拟资源 • 虚拟客户机硬件抽象 • 处理器,内存,I/O设备,等。 • 资源管理 • 把虚拟资源映射到物理资源 • 虚拟机之间复用硬件 • 基于管理策略管理资源的竞争
资源管理目标 • 性能隔离 • 防止虚拟机独占资源 • 保证可期的服务速度 • 高效利用 • 充分利用空闲资源 • 适度性能降低下的资源过载使用 • 易于管理 • 灵活的动态划分 • SLA(Service Level Agreement)的绝对满足 • 调控虚拟机的相对重要性
内容概要 • 资源控制 • 处理器调度 • 内存管理 • NUMA 调度 • 小结
资源控制 • 主要特性 • 表达绝对的服务速度 • 表达相对的重要性 • 用分组实现隔离或共享 • 主要挑战 • 对初学者要足够简单 • 对专家要提供强大的支持 • 权衡应用级别度量和物理资源消耗 • 既适用于单主机也适用于服务器群
VMware 支持的基本控制 • 共享 • 指明相对重要性 • 直接获得特定比例的资源 • 抽取一定资源,但仍保持比例 • 预留 • 最小的预留量,系统过载时仍须保证 • 表示为具体绝对的单位量 (MHz, MB) • 准入控制: 预留总额≤ 能力容量 • 限制 • 资源消耗上限,即使有很多空闲资源 • 也表示为具体绝对的单位量 (MHz, MB)
共享的例子 • VM的共享比例调整 • 动态地重新分配 • 加入新的VM,资源过载 • 均适度的降低比例 • 移除某个VM • 按比例利用额外空闲资源
VM1 VM2 预留的例子 • 总能力 • 600 MHz 被预留 • 400 MHz 可用 • 准入控制 • 试图启动2个VM • 每个要求300 MHz • 无法同时满足两者 • VM1 启动成功 • VM2 被拒绝
VM 限制的例子 • 当前使用率 • 600 MHz 使用中 • 400 MHz 空闲 • 启动CPU有上限的VM • 200 MHz上限 • 执行速度被限制 • 新使用率 • 800 MHz 使用中 • 200 MHz 空闲 • VM被禁止利用空闲资源
VMware支持资源池 • 动机 • 为各虚拟机组分配总的资源 • 资源池之间是隔离的,在资源池内共享 • 灵活的分层结构 • 方便访问控制和委派 • 资源池是 • 具有授权的命名对象 • 对于每类资源进行保留、限制和共享 • 父资源池,子资源池,虚拟机
Admin管理用户 策略:Alice的份额比Bob多50% 用户管理自己的虚拟机 未显示预留和限额 虚拟机获得的资源 Admin 300 Admin 200 Admin Alice Bob 75 Alice 400 Bob 75 Alice 30% VM1 VM2 VM3 40% 30% 资源池的例子
Admin 300 Admin 200 Admin Alice Bob 800 Bob 30% 13% 75 Alice 400 Bob 75 Alice VM4 VM1 VM2 VM3 27% 30% 举例: Bob 添加虚拟机 • 相同的策略 • 资源池隔离用户 • Alice仍然比Bob多50%的份额 • 虚拟机分配到的资源
资源控制: 发展方向 • DMTF标准 • 预留、限额、权重 + 资源池 • 模型的表达能力适用于当前所有的虚拟化系统 • 参与者:VMWare、Microsoft、IBM、HP、Sun、XenSource等 • 其他控制? • 支持优先级的调度 • 实时延迟保证 • I/O相关控制 • 应用级度量 • 用事务频度、响应时间等来表述需求 • 计算能力,需要具体的领域/应用相关的知识 • 能否叠加于物理资源基本控制之上
内容概要 • 资源控制 • 处理器调度 • 内存管理 • NUMA 调度 • 小结
处理器调度 • 主要特性 • 精确的速率控制 • 支持UP和SMP虚拟机 • 充分利用多核、多线程CPU • 分组机制 • 主要挑战 • SMP虚拟机的高效调度 • 虚拟机负载平衡、中断平衡 • 核/线程可能共享缓存、共享功能单元 • 缺乏在微架构层次的公平控制 • 合理计算在中断处理上的时间
VMware 中的处理器调度 • 调度算法 • 基于速度的控制 • 分层资源池 • 处理机间负载平衡 • 精确计量 • 多处理器虚拟机支持 • 多处理器独占假象 • 近似同步的VCPU协同调度 • 现代处理器支持 • 共享缓存的多核CPU • 同发多线程(SMT)
A 2 4 10 4 6 8 8 8 10 B 3 3 12 6 6 6 9 9 9 C 6 6 12 6 6 6 6 12 12 按比例共享调度 • 简化的虚拟时间算法 • 虚拟时间 = 使用时间/份额 • 调度具有最小虚拟时间的VM • 举例:3虚拟机A、B、C,3:2:1份额比例
管理员 vtime = 2000 vtime = 2100 Alice Bob vtime = 2200 vtime = 1800 vtime=2100 vtime = 2200 VM1 VM2 VM3 VM4 分层调度 • 动机 • 增强每个资源池间的公平性 • 未使用的资源流向最亲近的VM • 途径 • 在每个节点都维持虚拟时间 • 递归地选择拥有最小虚拟时间的节点
处理器间负载均衡 • 动机 • 高效利用多处理器 • 增强全局公平性 • 均摊上下文转换开销 • 保持缓存亲和性 • 方法 • 针对每个处理器的分派和运行队列 • 周期性地扫描远程队列以达到更公平 • 每当PCPU空闲时拉入VCPU执行 • 每当VCPU唤醒时推向PCPU执行 • 考虑缓存亲和性的成本效益
SMP 虚拟机的协同调度 • 动机 • 支持独占多处理器假象 • 正确性 — 避免客户机蓝屏司机/内核错误 • 性能— 考虑客户操作系统自旋锁(spin lock) • 途径 • 限制VCPU间的进度失衡 • 把空闲VCPU作为运行中的看待 • 协同停止 – 失衡积累时,停止VCPU协同调度 • 协同开始 – 基于失衡累积阈值开启VCPU协同调度
计费统计 • 资源使用统计 • 按VM资源使用量计费 • 对资源池可整体计费 • 针对支持SMT的系统,计费方式须相应调整 • 系统时间统计 • 统计在中断处理、下半部和系统线程上消耗的时间 • 不要对碰巧正在运行的虚拟机罚时 • 系统工作服务于哪个VM,就对哪个VM计费 • 可基于统计采样的方式来减少开销
Intel 超线程 一个核两个线程 (LCPU) 没有明显的优先级,两者公平 HALT一个 资源全交给另一个 VCPU LCPU的映射 时间共享 vs. 空间共享 依赖于动态VM获得到的 空闲线程也许会抢占VCPU 当一个HALT时候要调整计费 超线程共享控制 微架构服务拒绝[Grunwald ’02] 手动:任何的、内部的、不共享 自动隔离 A0 A0 B0 A1 X X B1 A1 B0 B1 X X 超线程的例子 core LCPUs vs. 时间 空间 两种共享方式
处理器调度:发展方向 • 共享缓存管理 • 针对迁移显示的开销-收益权衡 • 发掘缓存分区技术 • 电源管理 • 探索频率和电压的调整策略 • 确保不损害计费和速度保证 • 客户机热添加/移除处理器
内容概要 • 资源控制 • 处理器调度 • 内存管理 • NUMA 调度 • 小结
内存管理 • 期望的能力 • 高效内存过载使用 • 精确资源控制 • 发掘共享机会 • 平衡硬件能力 • 挑战 • 内存分配应体现重要性和工作集 • 一般只有客户操作系统才知道那些对优化决策而言的最佳数据 • 客户机和管理器级别策略可能会冲突
VPN guest 影子页表 PPN 硬件TLB VMM MPN 内存虚拟化 • 传统VMM策略 • 多了一层映射 • 虚拟的 “物理的”客户机通过原始页表映射VPN到PPN • “物理的” 机器VMM 映射PPN到MPN • 影子页表 • 两个映射的复合 • 对一般内存的访问,硬件使用VPN到MPN的映射 • NPT/EPT硬件 • 硬件MMU支持内嵌页表 • 没有软件影子的需要了
VMware 内存管理 • 回收机制 • 气球技术 – 客户驱动分配并锁定PPN, hypervisor 释放对应的MPN • 交换技术– VMM透明地交换出PPN页面,按需换入页面 • 页面共享 – VMM识别基于内容相同的PPN,通过写复制( copy-on-write)映射到相同的MPN • 分配策略 • 比例共享 – 采用最小页共享率从虚拟机中回收内存 • 空闲内存“税”– 对虚拟机的空闲页面征收比活跃页面高的费用,从而防止低效的内存囤积 • 大页技术 – 采用大页映射来改善TLB性能
回收内存 • 传统方法:增加透明页交换层 • 需要VMM层的页替换决策 • 只有客户操作系统知道用于优化决策的最佳数据 • 客户机和元级别策略会失配 • 举例:重复交换问题(VM和VMM对同一页面均交换出去了) • 另一种方法:隐式合作 • “诱骗”客户系统进行页替换 • 避免在VMM层次做策略决定
气球技术(Ballooning) 客户操作系统 充气气球(+ 压力) 可能会把页面交 换到虚拟磁盘 气球 客户操作系统 客户操作系统管理内存 隐式协作 气球 可能从虚拟磁盘 把页面交换进去 客户操作系统 放气气球(– 压力)
页面共享 • 动机 • 多个虚拟机运行相同的操作系统和应用程序 • 消除冗余的代码、数据和零页备份 • 透明的页面共享 • 通过“写复制”把多个PPN映射到单个MPN上 • Disco首创[Bugnion ’97], 但是需要客户操作系统安装挂钩 • 基于内容的共享 • 通用,不需要修改客户操作系统 • 为长时间讲后台进程节省内存
011010 110101 010111 101100 哈希值: VM: PPN: MPN: …06af 3 43f8 123b 机器内存 页面共享:扫描候选PPN 哈希页内容 …2bd806af VM 1 VM 2 VM 3 提示帧 哈希表
页面共享:成功匹配 VM 1 VM 2 VM 3 共享帧 机器内存 哈希值: 引用: MPN: …06af 2 123b 哈希表
分配策略 • 传统途径 • 优化聚合后的性能度量 • 问题:没有QoS保障,VM的重要性会变化 • 纯粹基于共享的途径 • 采用最小页共享率优先的方式回收VM内存[Waldspurger ’95] • 问题:忽略了使用率、低效的内存囤积[Sullivan ’00] • 期望的行为 • 当正在使用内存时虚拟机能充分共享 • 当工作集缩减时虚拟机也许会丢失页面
回收空闲内存 • 空闲内存“税” • 虚拟机从空闲页面征收比从活跃页面更多费用 • 页面共享率在空闲时刻调整 • 税率 • 明确的管理参数 • 0% “资本主义( plutocracy )” … 100% “社会主义( socialism )” • 高回收率 • 回收大部分空闲内存 • 留有缓冲,防止工作集快速变化
空闲内存“税” : 0% • 实验 • 2 个虚拟机, 256 MB, 相同份额 • 虚拟机1: Windows boot+idle • 虚拟机2: Linux boot+dbench • 实线: 使用的, 虚线: 活跃的 • 改变税率 • 改之前: 没有税 • 虚拟机1空闲, 虚拟机2活动的 • 得到相同的分配 内存 (MB) 时间(分钟)
空闲内存”税” : 75% • 实验 • 2 个虚拟机, 256 MB, 相同份额 • 虚拟机1: Windows boot+idle • 虚拟机2: Linux boot+dbench • 实线: 使用的, 虚线: 活跃的 • 改变税率 • 之后: 高税率 • 重新分配虚拟机1虚拟机2 • 虚拟机1 降低到最小 • 虚拟机2吞吐率改善30% 内存 (MB) 时间 (min)
内存管理: 发展方向 • 进一步利用页面重映射 • 对于大页面动态内存碎片整理 • 电源管理[Huang ’03] • 探索硬件的趋势 • I/O MMU 支持隔离、重映射 • NPT/EPT 的进一步优化 • 客户机热添加/移除内存 • 客户机内存压力评估
内容概要 • 资源控制 • 处理器调度 • 内存管理 • NUMA 调度 • 小结
NUMA 调度 • NUMA 平台 • 非一致内存访问(Non-uniform memory access) • 节点 = 处理器 + 本地内存 + 缓存 • 实例: IBM x460 (Intel Xeon), HP DL585 (AMD Opteron) • 主要特性 • 自动映射虚拟机到NUMA节点 • 动态重新均衡 • 主要挑战 • 内存局部性和负载平衡之间的矛盾 • 常用平台上缺少详细的硬件计数器
VMware NUMA 调度 • 周期性重新均衡 • 计算虚拟机的内存局部性 • 将节点分配给每一个虚拟机作为“主”节点 • 节点间迁移VM和内存页 • 虚拟机迁移 • 移动虚拟机的所有VCPU和线程 • 为均衡负载和增强局部性而迁移 • 内存页迁移 • 从“主”节点分配新页 • 把PPN重新映射到本地MPN • 基于节点的MPN共享
NUMA 调度: 发展方向 • 探索硬件的趋势 • NUMA + 多核 内嵌 NUMA • 节点间距离权重 (SLIT 表) • 更优的页面迁移启发 • 决定获益最大的页面做迁移 • 一些高端系统(e.g. SGI Origin)能进行每个页的远端失效计数器 • 在通用的X86硬件上还不支持
小结 • 资源管理 • 对指定分配的控制 • 处理器, 内存, NUMA, I/O, 电源 • 多资源间的权衡 • 丰富的搜索领域 • 很多有趣的开放性问题 • 很多独特的解决方法