java - 如何设置Java线程的cpu核心亲和性?

标签 java linux

我搜索了以前关于类似主题的帖子,但找不到合适的答案,因此提出了这个问题。非常感谢您帮助回答。

我知道在 Linux 中通过 taskset 命令设置进程与特定 CPU 内核的关联。但是我想设置一个 Java 线程对特定 cpu 核心的亲和力,以便属于同一进程的其他线程可以在所有剩余的核心上运行。例如,如果我有一个包含 10 个线程和 4 核机器的进程,我想为一个线程保留 core-1 并让剩余的 9 个线程在剩余的 3 核上运行。可以做到吗?如何做到?

谢谢 萨钦

最佳答案

假设 2241 是您的 java 进程的 pid。运行:

jstack 2241

这为您提供了一个线程列表。在那里找到你的并记下 nid 字段。假设 nid=0x8e9,将 10 进制转换为 2281。然后运行:

taskset -p -c 0 2281

完成。

关于java - 如何设置Java线程的cpu核心亲和性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392379/

相关文章:

c - 如何在linux下用c语言创建定时器?

java - 尽管实现了 Serialized,为什么我还是收到 java.io.NotSerializedException : Investment. Date?

java - 更改 GoogleMap 标记 android 的自定义信息窗口的位置

java - 将用户输入到 excel (Apache poi)

c++ - 如何在C++中使用new为类动态分配内存?

c++ - 我们可以使用 ofstream 对象作为 backtrace_symbols_fd() 中的第三个参数吗?

linux - Hive 获取超过平均值 10000 的行

JAVA,SSLSocket 连接问题

java - 选择算法有时会返回错误的结果

linux - fork() 机制的一部分