【发布时间】:2017-04-19 10:23:40
【问题描述】:
我正在阅读 Ignite 文档,现在我在 the section about performance。这是写的(强调我的):
默认情况下,Ignite 的主线程池大小设置为 2 倍 可用的 CPU 计数。在大多数情况下,每个内核保留 2 个线程 导致更快的应用程序性能,因为会更少 上下文切换和 CPU 缓存会更好地工作。
我不明白为什么如果我们每个核心有 2 个线程,上下文切换会更少?我认为如果所有线程都忙于某项工作,那么将会有很多上下文切换,因为我们不能运行两倍于内核数量的工作。这会损害性能。
这是什么意思?
【问题讨论】:
-
也许它们计入虚拟 CPU 内核和超线程?
-
他们的意思是什么?没有更多的上下文,这是不可能的。
-
@AndrewHenle 但这就是文档中的内容。
-
@St.Antario 好吧,他们必须有一些默认值,这似乎是他们的推理。甚至可能是真的。
-
唯一可以解释推理的人是编写该文档的人,其他任何事情都只是猜测。
标签: java multithreading threadpool