Когда кочевник дросселирует задачу? - PullRequest
0 голосов
/ 28 мая 2019

Как кочевник ограничивает потребление ресурсов для задачи?Если в группе есть две задачи, каждая из которых имеет cpu = 100, есть ли общий пул 200, к которому обе задачи имеют доступ?Что произойдет, если одна из этих задач хочет получить доступ к большему количеству тиков ЦП?

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 - будут ли ресурсы и задачи ограничивать использование ресурсов?

1 Ответ

0 голосов
/ 28 мая 2019

Это не полностью отвечает на вопрос, но документация драйвера докера содержит некоторые подробности о том, как это работает:

CPU

Nomad ограничивает ЦП контейнеров на основе долей ЦП. Общие ресурсы ЦП позволяют контейнерам превышать пределы ЦП. Ограничения на ЦП будут налагаться только при наличии конкуренции за ресурсы. Когда хост находится под нагрузкой, ваш процесс может быть ограничен для стабилизации QoS в зависимости от того, сколько у него общих ресурсов. Вы можете увидеть, сколько общих ресурсов процессора доступно вашему процессу, прочитав NOMAD_CPU_LIMIT. 1000 акций примерно равны 1 ГГц.

Пожалуйста, помните о последствиях использования общих ресурсов процессора при загрузке тестовых рабочих нагрузок в Nomad.

Память

Nomad ограничивает использование памяти контейнерами на основе общей виртуальной памяти. Это означает, что контейнеры, запланированные Nomad, не могут использовать swap. Это делается для того, чтобы процесс подкачки не снижал производительность для других рабочих нагрузок на том же хосте.

Поскольку память не является эластичным ресурсом, вам необходимо убедиться, что ваш контейнер не превышает объем выделенной для него памяти, иначе он будет завершен или аварийно завершит работу при попытке выполнить malloc. Процесс может проверить свой лимит памяти, прочитав NOMAD_MEMORY_LIMIT, но ему нужно будет отслеживать использование собственной памяти. Ограничение памяти выражается в мегабайтах, поэтому 1024 = 1 ГБ.

...