【问题标题】:When does nomad throttle a task?nomad 什么时候限制任务?
【发布时间】:2019-10-13 18:15:59
【问题描述】:

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,我看到resourcestasks 的ThrottledPeriods、ThrottledTicks 都被分解了——资源和任务都会限制资源使用吗?

【问题讨论】:

    标签: nomad


    【解决方案1】:

    这并不能完全回答问题,但docker driver docs 有一些关于它的部分工作原理的详细信息:

    CPU

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2012-07-25
      • 2017-01-26
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多