Skip to content
Igelko edited this page Nov 27, 2014 · 2 revisions

Overview

Profiles describe how an application should be executed. In particular, through profiles one can configure various timeouts and runtime limits. Unlike manifests, profiles do not describe what to execute.

Timeouts

  • heartbeat-timeout, default: 30.0f, positive, specifies the amount of time to wait for slave heartbeats: missing heartbeats usually mean that the slave's I/O thread is blocked by some operation for far too long and that slave should be restarted.
  • idle-timeout, default: 600.0f, non-negative, specifies the amount of time an idle slave would be kept alive; zero means idle slaves won't be terminated at all.
  • startup-timeout, default: 10.0f, positive, same as heartbeat-timeout, but used before the first heartbeat is received, i.e. while a slave is being initialized.
  • termination-timeout, default: 5.0f, positive, specifies the amount of time to wait for outstanding sessions on app shutdown.

Limits

  • concurrency, default: 10, positive, the maximum number of simultaneous sessions on a single slave.
  • crashlog-limit, default: 50, non-negative, the maximum number of standard output lines to keep during the slave life; these lines are kept in a ring buffer and would be dumped into the core storage if the given slave crashes or times out.
  • grow-threshold, positive, pool growth slowdown coefficient; the effective pool size is calculated as min(pool-limit, max(1, queue_size / grow_threshold))
  • pool-limit, default: 10, positive, maximum number of active slaves.
  • queue-limit, default: 100, positive, maximum length of the queue.

Settings

  • log-output, default: false, specifies whether to dump all slave standard output into the log.

Isolation

Isolations are used to spawn slaves in a controlled environment. There are two types of isolations for now:

  • Process
  • CGroup

Unlike Process isolate, CGroup isolate can be configured. CGroup arguments take the following form: "subsystem.option": value, where value might be a string, an integer or a boolean depending on the option. CGroup isolation can be enabled and configured using something similar to the following snippet in the profile:

{
  "isolate": {
    "type": "cgroups",
    "args": {
      "blkio.throttle.write_bps_device": "252:2 10485760",
      "memory.limit_in_bytes": "4G"
    }
}
Clone this wiki locally