[ 
https://issues.apache.org/jira/browse/MESOS-1718?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15043933#comment-15043933
 ] 

Klaus Ma commented on MESOS-1718:
---------------------------------

Update the code diff as following:
1. Move {{getExecutorInfo}} from slave to master
2. Cut resources from task for command executor
3. Update unit test cases

There's some behaviour changed:
1. For command tasks, framework may need two offer to retrieve tasks' 
resources: executor offer & task offer. For example, one command task need 1 
CPU to run, master will use 0.1 CPU for executor & 0.9 CPU for tasks. When the 
task's killed, the two resources (0.1 CPU & 0.9 CPU) may send to framework in 
two offers.
2. There will be executor ID in master metrics

Implementation detail:
1. Introduce {{task_command}} into ExecutorInfo ({{ExecutorInfo::command}} is 
considered to by executor_command)
2. In master, build executor info if it's a command task: create executor info 
& record task command in {{ExecutorInfo::task_command}}. NOTE: only build 
ExecutorInfo with task_command, the executor_command should be built in slave
3. In docker/command executor, update code to get 
{{ExecutorInfo::task_command}} to run

If any comments, please let me know. I'll update the RR accordingly.

> Command executor can overcommit the slave.
> ------------------------------------------
>
>                 Key: MESOS-1718
>                 URL: https://issues.apache.org/jira/browse/MESOS-1718
>             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:
> https://github.com/apache/mesos/blob/0.20.0-rc1/src/slave/slave.cpp#L2448
> {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
(v6.3.4#6332)

Reply via email to