我正在 AWS 的 ECS 上通过 Docker 运行一个任务。该任务执行一些受 CPU 限制的计算,我想并行运行这些计算。我使用指定的线程数启动一个线程池,该线程池在我的PC上本地工作正常。出于某种原因,在 AWS ECS 上,即使有多个内核可用,也始终返回 1。因此,我的计算按顺序运行,不使用多核。Runtime.getRuntime().availableProcessors()
例如,现在,我有一个任务在“t3.medium”实例上运行,根据文档,该实例应该有2个内核。
当我执行以下代码时:
System.out.println("Java reports " + Runtime.getRuntime().availableProcessors() + " cores");
然后,日志上将显示以下内容:
Java reports 1 cores
我没有在 ECS 的任务定义中指定参数。我看到在 ECS 管理控制台的任务列表中,它有一列“CPU”,我的任务显示为 0。我还注意到,在实例列表(= VM)中,它将“CPU可用”列为2048,这可能与VM具有2个内核的事实有关。cpu
我希望我的 Java 程序能够查看 VM 必须提供的所有内核。(通常情况下,当Java程序在没有Docker的计算机上运行时的情况是这样的)。
我该怎么做?
拉丁的传说
相关分类