public class Example {
public static void main(String[] args) {
// print statement at the start of the program
System.out.println("Start...");
System.out.print("Number of available processors are: ");
System.out.println( Runtime.getRuntime().availableProcessors());
}
}
参考:https ://www.tutorialspoint.com/get-number-of-available-processors-in-java
当我在 AWS ECS Fargate 上编译并运行此代码时,即使我在任务 def 中指定了超过 1 个 cpu(4 个 vCPU 为 4098),也会得到“1”作为输出。
测试的Java版本:
- Corretto-17.0.0.35.1
- Corretto-8.275.01.1
但是,当我在 docker 内部的 AWS EC2 上执行相同操作时,通过使用 --cpus 为“docker run”分配 CPU,我得到了传递给 --cpus 的确切数字。AWS EC2 与 Containerd 的结果相同。
还在 EKS 1.18 中通过设置 CPU 限制对此进行了测试。它返回 CPU 限制中指定的 CPU 数量。
所以,想知道为什么“1”只在 AWS ECS 中。