Cloud Foundry CPU 核心

Cloud Foundry CPU Core

在 Pivotal Cloud Foundry 中,我是 运行 一个 Java 应用程序,具有 2GB 内存和 1 个实例。 Java 中的以下代码在运行时打印 16。我是否应该假设有 16 CPU 个核心可用于处理,或者这是整个机器的 CPU 份额,并且每个应用程序都按照此处的解释获得份额 https://docs.cloudfoundry.org/concepts/container-security.html#cpu

int processors = Runtime.getRuntime().availableProcessors();
System.out.println("Available processor::"+ processors); //16

另外,下面具体说明了什么

 cat /sys/fs/cgroup/cpu/cpu.shares
 2080

this is CPU share of overall machine and each app getting share as explained here https://docs.cloudfoundry.org/concepts/container-security.html#cpu

是的。这意味着您的应用 运行 所在的 Diego Cell 有 16 个内核。如果该 Cell 完全没有任何其他工作,理论上您可以访问所有 16 个 Cell,但是,通常情况并非如此,当存在争用时,您将根据 CPU 的数量受到限制您已分配的股份。

cat /sys/fs/cgroup/cpu/cpu.shares 2080

这是分配给您的股票数量。这不是一个非常有意义的数字,因为它是相对于与您的应用程序位于同一 Diego Cell 上的其他应用程序 运行。

一般...

  1. 分享越多,您获得的 CPU 时间就越多。
  2. 根据您的内存分配为您分配份额,因此更多内存意味着更多 CPU 份额。
  3. 分享次数多 CPU 的应用比分享次数少 CPU 的应用获得更多时间。
  4. 份额之间的比率保持不变,因此如果您的应用程序的份额是另一个应用程序的两倍,那么它将获得双倍的 CPU 时间。

如果您想查看更多可用号码,可以尝试使用this cf cli plugin。它会根据您应用的当前使用情况和您的 CPU 份额进行一些计算,并为您提供您正在使用的分配百分比。包括如果您对 CPU 的使用感到厌烦。

暂时超过您的 CPU 分配是可以的,但您不希望一直超过您的分配,否则如果其他应用程序被安排到与您相同的 Diego Cell 上,您的应用程序性能可能会受到影响应用程序(即发生 if/when 争用)。