Docker

Apache Mesos 是限制資源還是隔離資源?

  • May 22, 2016

換句話說,Apache Mesos內部或docker資源隔離機制有效嗎?

如果啟動的應用程序 A 需要 40% 的 CPU 資源,而應用程序 B 需要 61% - B 應用程序無法啟動,即使 A 應用程序實際上傳入了 10% 的 CPU?

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 slave。

  • Mesos 高手會問你的框架:我給你 1 個 cpu 和 1GB ram,你想用它來啟動一個任務嗎?在你的情況下,框架會回复 mesos master:“是的,我想用 0.4cpus 和 0.5GB ram 啟動任務 A,使用這個 docker 鏡像並執行這個命令……”。

現在還剩 0.6 cpu,但是任務 B 需要 0.61 cpu,所以框架無法啟動任務 B。

並且不要將其與資源隔離混淆,這是為了保證任務的程序不能使用超過它分配的 cpu(和/或 ram)份額。

資源隔離

Mesos 通過使用cgroups來實現資源隔離。Mesos 也支持作為 docker 容器啟動任務,但是 docker 容器的資源隔離也是使用 cgroups。

引用自:https://serverfault.com/questions/778320