【发布时间】:2022-01-30 04:57:16
【问题描述】:
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 中。
【问题讨论】:
-
您的 Fargate 任务的 CPU 设置是什么?
-
超过1,更新了我的问题。
标签: java jvm amazon-ecs jvm-arguments amazon-fargate