游牧者何时限制任务?

时间:2019-05-28 08:57:01

标签: 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都分解了–资源和任务都会限制资源的使用吗?

1 个答案:

答案 0 :(得分:0)

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

  

CPU

     

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

     

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

     

内存

     

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

     

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