【发布时间】:2018-10-05 07:54:54
【问题描述】:
我的问题更多是关于 Java 线程的级别。但对于操作系统级别的线程,它可能也更通用。
JAVA SPECIFIC:ThreadPool Tuning Size 的相关性是什么。 (公式)?影响性能及其在引擎盖下的行为方式,以及容器。 (我想我可以理解 cpu-sets 但不能理解 cpu-shares,我知道 cpu-shares 是什么,只是不明白线程在这里的行为方式)。
所以我阅读了一篇关于 java in containers(我在 CloudFoundary 上运行应用程序时观察到)、3 和 enhancements 的文章,它们被引入 JDK 10 以检测容器限制。
在上述文章中:
让我们简要了解一下 JVM 如何适应其运行的节点上可用的处理器/内核数量。实际上有许多参数默认情况下是根据核心数进行初始化的。 因此,如果 GC 线程、JIT 线程等的正常默认值是可用的“核心”总数。
现在,如果
number_of_cpus() 将根据 cpu_shares()/1024 计算
然后在假设 CPU-Share 为 512 的情况下。此计算结果为 0。(我假设该值将四舍五入为 1??)。 那么这是如何工作的呢?
【问题讨论】:
标签: java multithreading docker containers cgroups