跳转到: 导航, 搜索

Nova/资源分区规范

  • Launchpad 条目:NovaSpec:resource-partitioning
  • 创建:
  • 贡献者:

总结

以这种方式对系统资源(如网络带宽、CPU 算力,甚至可能包括存储 I/O 带宽)进行分区,以便为每个用户提供一组保留的资源,并允许所有用户同时最大限度地利用其保留的资源而不会出现问题。 * 限制虚拟机使用的资源

  • 确保承诺给用户的资源始终可用。
  • 如果运行良好,那么在给定具有相同资源限制的实例上运行的基准测试应该始终得到类似的结果。
  • 使用此功能是可选的。

发布说明

不仅可以限制虚拟机使用的资源,还可以(可选地)确保承诺给用户的资源始终可用。现在,公有云用户可以确切地知道虚拟机是否足够强大以满足他们的需求。他们将知道他们到底在为之付费。

术语定义

  • 资源:集群(和云)的虚拟机所需的有限资源,例如
    • 内存,
    • 磁盘空间,
    • 磁盘读取/写入带宽,
    • 互联网带宽(进/出),
    • 内网带宽(进/出)。
  • 保留资源:在硬件节点上始终可用于实例的资源,其数量在 SLA 中指定
  • 共享资源:任何用户都可以根据需要使用它们。
  • 限制:允许的最大资源使用量。用户不能使用超过该资源的量。
  • 资源分区 - 用户在系统上保留一组资源,无论当前使用情况如何,这些保留的资源都不能被他人使用。
  • 严格资源分区 - 用户被限制在其保留的资源集内。
  • 宽松资源分区 - 用户不被限制在其保留的资源集内,但可以使用系统上空闲(未保留)的资源。

原理

公有云用户希望能够使用他们所支付的费用。不多也不少。其中一些人不想与其他用户共享关键资源。他们希望拥有可供他们使用的合同资源,而无需等待。云提供商希望向用户提供他们所支付的费用。不多也不少。

用户故事

Alice 有一台虚拟机。它的互联网连接与 100 个其他用户共享。她对此不满意。她进入了另一个 SLA,现在为互联网上传和下载保留了 50Mbps。其他虚拟服务器的互联网操作将不会降低她的连接速度。

M. Hatter is using virtual servers for mathematical simulations. The host his virtual machine is sitting on has 100 users; therefore, he has quite limited access to CPU. He is willing to pay more to have some CPU power reserved only for him.

前提条件

  • 需要使实时迁移正常工作,以便在主机之间重新分配负载。
  • 我们需要能够限制集群资源的资源使用量。这对于每个节点操作系统甚至虚拟化程序来说都是不同的。

实现

  • 拥有实时即时迁移会很好,但即使没有它,这样做仍然有意义。
  • 我们需要更新(或子类化)调度器,不仅要考虑实际负载,还要考虑保留的资源量。这应该相对容易实现。
  • 使用 Linux 节点和 KVM/QEMU/UML,最自然的限制工具是 cgroups。
  • 计划
    • 首先我们需要实现CPU 分区,这不应该太难,至少对于 KVM/QEMU/UML 来说是这样。Bexar 也许可以实现这个。
    • 在使其工作后,我们可以尝试分区带宽——网络、磁盘,甚至可能是每个实例的内存带宽。
  • 在同一个系统中托管分区和普通实例很容易,前提是调度器知道哪些节点(主机)为其实例使用分区。

测试/演示计划

如果运行良好,在相同类型的虚拟机上运行基准测试应该始终得到类似的结果。其他虚拟机不应能够更改虚拟机的合同资源可用性。

未解决的问题

如何以标准方式限制磁盘 I/O?

  • 磁盘节流现在进入 Linux 内核,因此可以使用 cgroups 进行配置。这可能更容易在 bexar 版本发布后解决。

如何衡量我们即将为用户分区“整个资源”?

  • 我们需要就使用的基准测试规则和单位达成一致。可能最好选择最简单、高度集中的基准测试,这将最容易实现。

如何衡量实例的资源部分?

  • 使用整个主机的百分比将是最容易的。但这将在机器迁移时发生变化。因此,我们需要发明一种根据某些预期的基准测试结果来计算资源百分比的方法。这也意味着我们需要对服务器进行基准测试,以便调度器能够很好地了解它们,并且实例能够做出真正可预测的结果。

BoF 议程和讨论

我们正在使用 etherpad 页面进行讨论。

请通过 irc(alekibango, tr3buchet)与我们联系,讨论实现,或者如果您愿意以某种方式提供帮助。