我正在阅读mesos上的构建应用程序,并遇到以下声明:
CPU
此资源表示有多少cpu内核可用。任务可能会使用部分cpu这是可能的,因为mesos从机使用cpu共享,而不是保留特定的cpu。这意味着,如果您保留了1.5个cpu,那么您的进程将被允许每秒使用总共1.5秒的cpu时间。这可能意味着,在单个执行器中,两个进程每秒钟获得750毫秒的cpu时间,或者一个进程每秒钟获得1秒的cpu时间,另一个进程每秒钟获得500毫秒的cpu时间。使用cpu共享的好处是,如果某个任务能够使用比其共享更多的cpu,而没有其他任务会使用其他空闲的cpu,那么第一个任务可能会使用比其共享更多的cpu。因此,保留的cpu保证了任务可用的cpu时间的最小值如果有额外的容量可用,它将被允许使用更多的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
每秒钟几次?
2条答案
按热度按时间cl25kdpy1#
通过使用多个cpu/核心:-)。
请注意,这些限制的实际行为/实施在很大程度上取决于实际使用的集装箱船/隔离器。不幸的是,我找不到任何好的/最新的文档(但是我知道有人在改进这个:-),但是你可以看看这篇博文:关于cpu资源的博文
更新cpu利用率有als硬上限:请参阅
--[no]-cgroups_enable_cfs
配置参数或此jira。mrzz3bfm2#
cpu=1.5
应该代表一个半cpu核心。您可以在mesoswebui中看到每个mesos代理(slave)提供多少内核。差不多就是这样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
命令来影响内核规划,但是mesos的。cpu=0.1
不会被考虑在内。--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's等)check-script.sh
验证系统上的支持)。cfs将保证每个过程最多可以使用指定的部分(例如。cpu=2.5
). 这样做的代价是,当某个任务处于空闲状态时,没有其他进程可以利用保留的核心。所以,确保你能很好地定义你的需求。最后提到的问题可以通过mesos文档中描述的cpu过度订阅来解决。