当前位置:  开发笔记 > 运维 > 正文

如何理解Mesos中的CPU分配?

如何解决《如何理解Mesos中的CPU分配?》经验,为你挑选了1个好方法。

我正在阅读在Mesos上构建应用程序,并遇到以下语句:

cpus
此资源表示可用的CPU核心数.任务可以使用CPU的小数部分 - 这是可能的,因为Mesos从属服务器使用CPU共享,而不是保留特定的CPU.这意味着,如果保留1.5 cpus,则允许您的进程每秒使用总共1.5秒的CPU时间.这可能意味着,在单个执行器中,两个进程每秒获得750毫秒的CPU时间,或者一个进程获得1秒的CPU时间,另一个进程在给定的秒内获得500毫秒的CPU时间.使用CPU共享的好处是,如果某个任务能够利用超过其共享的任务,并且没有其他任务会使用其他空闲的CPU,则第一个任务可能会使用超过其共享的任务.因此,保留的cpus可为任务提供可保证的最小CPU时间 - 如果有额外容量可用,则允许使用更多.

我无法理解" if you have 1.5 cpus reserved, your processes will be allowed to use a total of 1.5 seconds of CPU time each second.".它如何每秒使用1.5几秒钟CPU



1> Tombart..:

cpu=1.5应该代表一个半CPU核心.您可以在Mesos Web UI中看到每个Mesos代理(从属)提供的核心数.nproc除非mesos-slave配置为提供更少的CPU,否则这几乎就是显示的内容.Mesos以3位小数精度计算资源.

有几个标志会影响Mesos如何限制资源.对于CPU来说最重要的是isolation(我们在谈论mesos-slave/ mesos-agent设置):

--isolation=posix/cpu,posix/mem不应用CPU限制mesos-executor只是运行其他进程的进程.您可以使用nice,例如nice -20(用于最高优先级)或cpulimit命令来影响内核规划,但cpu=0.1不会考虑Mesos的内容.

--isolation=cgroups/cpu,cgroups/mem cgroups(2.6.29以来的Linux内核的一部分)允许限制每个进程或进程组使用的资源.某些发行版默认情况下不启用内存限制,cgroup_enable=memory需要传递给内核.但是让我们关注CPU.默认情况下cgroups采用保守方法,这cpu=1.0意味着将为任务保留至少一个CPU核心.但是如果主机上没有运行其他任务,它可以占用所有CPU.假设我们有一个主机,12 CPUs并且有两个任务正在运行cpu=2.0.然后每个任务可能会达到6 CPUs核心!(假设该主机上没有运行其他Mesos任务).这是非常危险的,当集群处于低负载时,所有任务看起来都会很好,但是一旦有很多任务,一些主机的性能就会降低.

--cgroups_enable_cfs CFS代表完全公平调度程序,它采用更严格的方法.默认情况下它已关闭,并非所有发行版都支持此功能(您可以使用例如Docker check-script.sh来验证系统上的支持).CFS将保证每个流程最多可以使用指定的部分(例如cpu=2.5).这是以某个任务空闲时其他进程无法利用保留核心为代价的.因此,请确保您能够很好地定义您的要求.

最后提到的问题可以通过Mesos文档中描述的CPU超额预订来解决.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有