mesos-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vinod Kone (JIRA)" <>
Subject [jira] [Commented] (MESOS-1718) Command executor can overcommit the slave.
Date Fri, 30 Oct 2015 17:10:27 GMT


Vinod Kone commented on MESOS-1718:

As [~idownes] mentioned in MESOS-2845, I don't follow your suggestion. We already have a command
line executor (mesos-executor) that we use to launch command tasks. The issue is that users
do not explicitly specify the command executor's information (resources, path to the executor
etc). Since an executor's cpu/mem resources cannot be 0, the slave tacks on min cpus and min
mem which causes the overcommit.

One option would be to make the master know about the command executor. Currently it is totally
oblivious to the presence of command executor. The tricky part though is that the master doesn't
know about the path of the command line executor on each slave (it could very well be different
on each slave based on the --launcher-dir flag). Maybe the slave can inform the master about
the command executor's path (or the whole info) during registration and master can then properly
setup the TaskInfo and its ExecutorInfo. This would also likely simplify the slave's logic
quite a bit.

> Command executor can overcommit the slave.
> ------------------------------------------
>                 Key: MESOS-1718
>                 URL:
>             Project: Mesos
>          Issue Type: Bug
>          Components: slave
>            Reporter: Benjamin Mahler
>            Assignee: Ian Downes
> Currently we give a small amount of resources to the command executor, in addition to
resources used by the command task:
> {code: title=}
> ExecutorInfo Slave::getExecutorInfo(
>     const FrameworkID& frameworkId,
>     const TaskInfo& task)
> {
>   ...
>     // Add an allowance for the command executor. This does lead to a
>     // small overcommit of resources.
>     executor.mutable_resources()->MergeFrom(
>         Resources::parse(
>           "cpus:" + stringify(DEFAULT_EXECUTOR_CPUS) + ";" +
>           "mem:" + stringify(DEFAULT_EXECUTOR_MEM.megabytes())).get());
>   ...
> }
> {code}
> This leads to an overcommit of the slave. Ideally, for command tasks we can "transfer"
all of the task resources to the executor at the slave / isolation level.

This message was sent by Atlassian JIRA

View raw message