【发布时间】:2011-01-15 08:19:55
【问题描述】:
是否有人知道将 Java 进程中的单个线程锁定到特定 CPU 内核(在 Linux 上)的方法?我已经在 C 中完成了此操作,但在 Java 中找不到如何执行此操作。我的直觉是这将需要一个 JNI 调用,但我希望这里的某个人可能有一些见解或可能以前做过。
谢谢!
【问题讨论】:
-
在下面查看我对 Hassan 评论的回答。一些线程是非常 I/O 密集型的,而另一些则是 CPU 密集型的。如果我要屏蔽对特定内核的 I/O 中断,我希望 I/O 密集型线程位于同一插槽上的内核上,并且我希望屏蔽 CPU 密集型线程免受 I/O 的影响.
-
@gimpf:一如既往地使用这种类型的“问题提问”:所以不是关于“为什么”,而是关于“如何”。 CPU 亲和性的存在是有原因的,Linux 和 Windows 下都有实用程序来设置进程的 CPU 亲和性是有原因的。 OP 的问题是一个完全有效的问题,它不需要“为什么”而是“如何”。
-
@WizardOfOdds:我怀疑“为什么”在 SO 上是被禁止的,而且由于 Java 通常不是用于并发相关性能调整的第一种编程语言,我认为健全性检查是有效的。跨度>
-
现在我需要这个问题的答案才能实现 NUMA 优化。
-
我喜欢这些“你为什么要做这个问题?”如果一位认真的工程师提出问题,请考虑一下这可能是需要认真回答的问题。
标签: java multithreading scheduling setthreadaffinitymask