换句话说,Apache Mesos
内部或docker
资源隔离机制起作用吗?
如果启动的应用程序 A 需要 40% 的 CPU 资源,而应用程序 B 需要 61% - 那么 B 应用程序就无法启动,即使 A 应用程序实际上只占用 10% 的 CPU 资源?
答案1
B 应用程序无法启动,即使 A 应用程序实际上占用了 10% 的 CPU 负载?
是的,因为否则应用程序 A 和应用程序 B 都会受到影响。假设 A 使用了 40% 的 CPU,应用程序 B,即使声明它需要 61% 的 CPU,也只能使用最多 60%。反之亦然(B 使用 61%,而 A 最多只能使用 39%)。
所以一般来说,资源不会超额预订。这是在资源分配阶段实现的。
仅供参考,mesos 如何启动任务(tasks
是 mesos 术语,而不是apps
):
启动任务
在mesos中,任务是由框架发起的。
假设您有一个配备 1 个 CPU 和 1GB RAM 的 mesos 从属设备。
- Mesos master 会询问你的框架:我为你提供 1 个 CPU 和 1GB RAM,你想用它启动一个任务吗?对于你的情况,框架会回复 mesos master:“是的,我想用 0.4cpus 和 0.5GB RAM 启动一个任务 A,使用这个 docker 镜像并运行这个命令...”。
现在还剩下0.6个CPU,但是任务B需要0.61个CPU,所以框架无法启动任务B。
不要将其与资源隔离混淆,资源隔离是为了保证任务进程不能使用超过其分配的 CPU(和/或 RAM)份额。
资源隔离
Mesos 通过使用cgroupsMesos也支持以docker容器的方式启动任务,但是docker容器的资源隔离也是使用cgroups。