当我在 kubernetes 中使用低于 1000m 的 cpu 请求时,同一容器中的多个线程可以同时使用多个核心并行运行吗?

dav*_*vid 6 cpu multithreading multicore cgroups kubernetes

当我谷歌搜索时,有一些答案说在kubernetes中,100ms cpu意味着你将使用一个cpu核心的1/10时间,而2300ms cpu意味着你将充分使用2个核心和3/10时间另一个CPU核心。这是对的吗?

我只是想知道在 kubernetes 中使用低于 1000ms 的 cpu 请求时,多个线程是否可以同时在多个核心上并行运行。

Pjo*_*erS 1

关于第一部分,您确实可以使用部分 CPU 资源来运行某些任务。\n在Kubernetes 文档 - 管理容器资源中,您可以找到可以指定requests运行 pod 的最低资源要求的信息,而limits哪些不能超过了。

\n

这篇文章中有很好的描述

\n
\n

请求和限制是 Kubernetes 用于控制 CPU 和内存等资源的机制。请求是容器保证得到的。如果容器请求资源,Kubernetes 只会将其调度到可以为其提供该资源的节点上。另一方面,限制可确保容器永远不会超过特定值。容器只允许达到极限,然后就受到限制。

\n
\n

CPU 请求/限制:

\n
\n

CPU 资源以毫核为单位定义。如果您的容器需要两个完整核心才能运行,您可以将值放入2000m. 如果您的容器仅需要核心的 \xc2\xbc,则您可以输入值250m。\n关于 CPU 请求需要记住的一件事是,如果您输入的值大于最大节点的核心数,那么您的 pod永远不会被安排。

\n
\n

关于第二部分,您可以并行使用多个线程。Kubernetes Job就是一个很好的例子。

\n
\n

一种简单的情况是创建一个 Job 对象,以便可靠地运行一个 Pod 直至完成。如果第一个 Pod 失败或被删除(例如由于节点硬件故障或节点重新启动),作业对象将启动新的 Pod。\n您还可以使用作业并行运行多个 Pod。

\n
\n

特别是关于作业并行执行的部分

\n

您还可以使用扩展检查并行处理,Jobs以基于通用模板运行多个并行处理。您可以使用此方法并行处理批量工作。在本文档中,您可以找到示例及其工作原理说明。

\n