我对mesos体系结构有较高的理解,但不清楚用于实现资源分配的os级技术。例如,mesos提供了一个framework1cpu和400mb内存,另一个framework2cpu和1gb内存,这在操作系统级是如何实现的?
bz4sfanl1#
热释光;dr:mesos本身并不在操作系统级别“分配”任何资源。尽管mesos可以使用操作系统级的原语(如cgroups)来确保任务不会使用超出其应该使用的资源,但资源仍然是由os分配的。节点上的mesos代理通过自动检测主机上的可用资源或由于已显式配置可用资源(建议用于生产),通告主机上有一些可用资源(例如,4个cpu和16gb的ram)。然后,master将这些资源提供给一个框架。然后,框架可以使用代理上可用的部分或全部资源启动任务:例如,框架可以启动一个具有2个cpu和8gb ram的任务。然后代理启动一个执行器来运行任务。如何严格执行“2 CPU和8gb ram”资源限制取决于如何配置mesos。例如,如果代理主机支持cgroups,并且代理以 --isolation='cgroups/cpu,cgroups/mem' ,cgroups将用于适当地限制cpu,并在任务试图超出其内存分配时终止任务。
--isolation='cgroups/cpu,cgroups/mem'
1条答案
按热度按时间bz4sfanl1#
热释光;dr:mesos本身并不在操作系统级别“分配”任何资源。尽管mesos可以使用操作系统级的原语(如cgroups)来确保任务不会使用超出其应该使用的资源,但资源仍然是由os分配的。
节点上的mesos代理通过自动检测主机上的可用资源或由于已显式配置可用资源(建议用于生产),通告主机上有一些可用资源(例如,4个cpu和16gb的ram)。
然后,master将这些资源提供给一个框架。
然后,框架可以使用代理上可用的部分或全部资源启动任务:例如,框架可以启动一个具有2个cpu和8gb ram的任务。
然后代理启动一个执行器来运行任务。
如何严格执行“2 CPU和8gb ram”资源限制取决于如何配置mesos。例如,如果代理主机支持cgroups,并且代理以
--isolation='cgroups/cpu,cgroups/mem'
,cgroups将用于适当地限制cpu,并在任务试图超出其内存分配时终止任务。