我在 Kubernetes Pod 中运行一个多线程 Spring Boot 微服务,其 CPU 限制为 1(1000m)。这是否意味着只能使用一个 CPU 核心逐个运行所有线程?还是说,只要总 CPU 使用率不超过 1 个 CPU 的限制,多个 CPU 核心可以并发运行我的线程?
我在 Kubernetes Pod 中运行一个多线程 Spring Boot 微服务,其 CPU 限制为 1(1000m)。这是否意味着只能使用一个 CPU 核心逐个运行所有线程?还是说,只要总 CPU 使用率不超过 1 个 CPU 的限制,多个 CPU 核心可以并发运行我的线程?
这个。您可以拥有任意数量的线程,内核会将它们调度到尽可能多的可用 CPU 核心上,但您的进程每秒分配的 CPU 时间不会超过 1 CPU 秒。
假设你的应用程序很大程度上受数据库限制,并且一个线程实际上只能使用 25% 的内核资源。如果你同时运行 4 个线程,它们加起来仍然符合
limits: { cpu: 1 }
约束条件,并且都能以各自的全速运行(可能在不同的物理内核上)。