[ 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)