ScheduleHeterogeneousInstances
调度异构实例
- Launchpad 条目: NovaSpec:heterogeneous-instance-types
- 创建者: Lorin Hochstein
- 贡献者: USC 信息科学研究所
此文档取代: HeterogeneousInstanceTypes
参见 HeterogeneousArchitectureScheduler
总结
Nova应该支持 CPU 架构、加速器架构和网络接口作为实例类型(或使用 RackSpace API 术语的 flavor)定义的一部分。
用户故事
Mary 管理着一个云数据中心。除了她的 x86 刀片服务器外,她还想向客户宣传她的 Power7 高性能计算云,该云支持 40Gbit QDR Infiniband。Mary 使用 nova-manage instance_types create 命令定义了 "p7.sippycup", "p7.tall", "p7.grande" 和 "p7.venti",并将 cpu_arch 设置为 "power7",并增加默认内存、存储、核心和保留带宽的数量。Mary 还拥有一小批 GPU 加速系统,因此她定义了 "p7f.grande" 和 "p7f.venti" 选项,并将 xpu_arch 设置为 "fermi",并将 xpus 设置为 grande 的 1 和 venti 的 2。
Fred 想运行一台 8 核机器,并配备 1 个基于 Fermi 的 GPU 加速器。他查看了 Mary 的网站上的文本描述,然后想要 p7f.grande 虚拟机。他运行
euca-run-instances -t p7f.grande -k fred-keypair emi-12345678
George 想启动一个配备 3 个 GPU 的实例。他运行
euca-run-instances -t "m1.xlarge;xpu_arch=fermi;xpus=3" -k fred-keypair emi-87654321
设计
在数据库中添加一个新的 InstanceTypeMetadata 表,用于存储关于规格的键/值对:特定实例超出常见的核心/内存/存储需求所需的额外功能。调度器将根据 flavor_id 检索此信息。
每个 Nova 安装将使用它们自己的数据表示方案。ISI 可能会使用以下方案来表示我们异构集群中的数据
- xpus: 所需的 xpus(加速器)数量
- xpu_arch: xpu 架构:例如 "fermi"
- cpu_info: 可能包含供应商功能
- xpu_info: 可能包含供应商功能
- hypervisor_type: 要使用的 hypervisor 类型 (kvm, xen, lxc 等)
每个键的值可以是一个多级字典,采用 json 格式,类似于 ComputeNode 表中当前使用的 cpu_info 字段。
'cpu_info': '{"arch": "x86_64",
"model": "Nehalem",
"vendor": "Intel",
"features": ["rdtscp", "dca", "xtpr", "tm2", "est", "vmx",
"ds_cpl", "monitor", "pbe", "tm", "ht", "ss",
"acpi", "ds", "vme"],
"topology": {"cores": "4", "threads": "1", "sockets": "2"}
}'