mesos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Mahler (JIRA)" <j...@apache.org>
Subject [jira] [Created] (MESOS-458) Current cgroups layout does not ensure the slave gets a fair share of the CPU resources.
Date Fri, 03 May 2013 02:10:15 GMT
Benjamin Mahler created MESOS-458:
-------------------------------------

             Summary: Current cgroups layout does not ensure the slave gets a fair share of
the CPU resources.
                 Key: MESOS-458
                 URL: https://issues.apache.org/jira/browse/MESOS-458
             Project: Mesos
          Issue Type: Improvement
            Reporter: Benjamin Mahler


We currently have the following layout when there is no system cgroup present on a machine:

[root cgroup] (system processes, including the mesos-slave) 1024 shares
      |
[mesos] (no processes) 1024 shares
      |                  |
[executor1] ... [executorN]

That is:
/cgroup: (system processes, including the mesos-slave) 1024 shares
/cgroup/mesos: (no processes) 1024 shares
/cgroup/mesos/executor1: X shares
...
/cgroup/mesos/executorN: X shares

This does not ensure the slave gets a fair share of the cpu, especially when there is load
inside the root cgroup. This is because the slave is contending with other processes inside
the root cgroup. If the administrators set up a system cgroup, the layout looks as follows:

[root cgroup] (no processes, including the mesos-slave) 1024 shares by default
      |                                                      |
[mesos] (no processes) 1024 shares        |
      |                  |                                   |
      |                  |                      [system] (system processes, including the
mesos-slave) 1024 shares
      |                  |
executor1 ... executorN

That is:
/cgroup: (no processes)
/cgroup/system: (system processes, including the mesos-slave) 1024 shares
/cgroup/mesos: (no processes) 1024 shares
/cgroup/mesos/executor1: X shares
...
/cgroup/mesos/executorN: X shares

This still does not ensure the slave gets a fair share for the same reasons.

However, if we create a cgroup to hold only the slave:

[root cgroup] (no processes, including the mesos-slave) 1024 shares by default
      |                                                       |                          
|
[mesos] (no processes) 1024 shares         |                       mesos-slave (just the slave)
1024 shares             
      |                  |                                    |
      |                  |           1024 shares [system] (system processes) 1024 shares
      |                  |
executor1 ... executorN

That is:
/cgroup: (no processes)
/cgroup/system: (system processes) 1024 shares
/cgroup/mesos-slave: (mesos-slave process) 1024 shares
/cgroup/mesos: (no processes) 1024 shares
/cgroup/mesos/executor1: X shares
...
/cgroup/mesos/executorN: X shares

With the above configuration, the slave will get 1 cpu, system processes will get 1 cpu, and
the executors will get the rest.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message