Mesos 任务使用比指定更多的资源

Mesos tasks use more resources than specified

我试图在具有 208 个内核的 Mesos 集群上启动一个具有 1000 个任务的框架。在调度程序中,我指定每个任务需要 2 个核心。但是有些任务刚刚失败并显示错误消息:Task uses more resources cpus(*):4; mem(*):4096; disk(*):4096 than available cpus(*):2; mem(*):2048; disk(*):2048。我还尝试动态监控集群上的资源使用情况。而且我注意到根据信息

每个任务实际上消耗了4个核心
2016/11/02 02:25:10.073 mesos_scheduler INFO 208.0 cpu 98.0 used, 807768.0 memory 100352.0 used, 44052112.0 disk 100352.0 used, 24.0 active tasks
2016/11/02 02:25:10.574 mesos_scheduler INFO 208.0 cpu 96.0 used, 807768.0 memory 98304.0 used, 44052112.0 disk 98304.0 used, 24.0 active tasks
2016/11/02 02:25:15.301 mesos_scheduler INFO 208.0 cpu 94.0 used, 807768.0 memory 96256.0 used, 44052112.0 disk 96256.0 used, 23.0 active tasks
2016/11/02 02:25:15.803 mesos_scheduler INFO 208.0 cpu 92.0 used, 807768.0 memory 94208.0 used, 44052112.0 disk 94208.0 used, 23.0 active tasks
2016/11/02 02:25:16.728 mesos_scheduler INFO 208.0 cpu 90.0 used, 807768.0 memory 92160.0 used, 44052112.0 disk 92160.0 used, 22.0 active tasks
2016/11/02 02:25:17.229 mesos_scheduler INFO 208.0 cpu 88.0 used, 807768.0 memory 90112.0 used, 44052112.0 disk 90112.0 used, 22.0 active tasks

我写的指定核数的代码如下

 cpus = executor.resources.add()
 cpus.name = "cpus"
 cpus.type = mesos_pb2.Value.SCALAR
 cpus.scalar.value =2

我是否正确使用 api?

很可能,您已将 2 个 CPU 分配给 executor,将 2 个 CPU 分配给 task,因此总共有 4 个。

在 Mesos 中,每个 taskexecutor 下运行。当你不指定 executor 时,Mesos 使用一个非常轻量级的默认执行器,占用 0.01 CPU 和 32 MB 内存。