4

nomad 如何限制任务的资源消耗?如果一个组中有两个任务,每个任务都有,是否有两个任务都可以访问cpu = 100的共享池?200如果其中一项任务想要访问更多 CPU 时钟,会发生什么?

job "docs" {
  group "example" {
    task "server" {
      resources {
        cpu    = 100
        memory = 256
      }
    }
    task "greeter" {
      resources {
        cpu    = 100
        memory = 256
      }
    }
  }
}

看着/client/allocation/:alloc_id/stats,我看到 ThrottledPeriods 和 ThrottledTicks 都被分解了,resources而且tasks资源和任务都会限制资源使用吗?

4

1 回答 1

4

这并没有完全回答这个问题,但docker 驱动程序文档有一些关于它的部分工作原理的详细信息:

中央处理器

Nomad 根据 CPU 份额限制容器的 CPU。CPU 份额允许容器突破其 CPU 限制。仅当存在资源争用时才会施加 CPU 限制。当主机处于负载状态时,您的进程可能会受到限制以稳定 QoS,具体取决于它拥有的共享数量。您可以通过读取 NOMAD_CPU_LIMIT 来查看您的进程有多少 CPU 份额可用。1000 股大约等于 1 GHz。

在 Nomad 上加载测试工作负载时,请牢记 CPU 份额的含义。

记忆

Nomad 根据总虚拟内存限制容器的内存使用。这意味着 Nomad 调度的容器不能使用交换。这是为了确保 swappy 进程不会降低同一主机上其他工作负载的性能。

由于内存不是弹性资源,因此您需要确保您的容器不超过分配给它的内存量,否则它会在尝试 malloc 时终止或崩溃。进程可以通过读取 NOMAD_MEMORY_LIMIT 来检查其内存限制,但需要跟踪自己的内存使用情况。内存限制以兆字节表示,因此 1024 = 1 GB。

于 2019-05-28T09:05:32.027 回答