如何理解mesos中的cpu分配?

lc8prwob  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(407)

我正在阅读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.5CPU 每秒钟几次?

cl25kdpy

cl25kdpy1#

通过使用多个cpu/核心:-)。
请注意,这些限制的实际行为/实施在很大程度上取决于实际使用的集装箱船/隔离器。不幸的是,我找不到任何好的/最新的文档(但是我知道有人在改进这个:-),但是你可以看看这篇博文:关于cpu资源的博文
更新cpu利用率有als硬上限:请参阅 --[no]-cgroups_enable_cfs 配置参数或此jira。

mrzz3bfm

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过度订阅来解决。

相关问题