我今天早上花了很多时间试图找出如何确定哪个处理器 ID 是超线程核心,但没有成功。
我希望找到此信息并使用 set_affinity()
将进程绑定(bind)到超线程或非超线程以分析其性能。
最佳答案
我发现了一个简单的技巧来完成我需要的事情。
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
如果第一个数字等于 CPU 编号(本例中为 0),则它是一个真正的内核,否则它就是一个超线程内核。
真实核心示例:
# cat /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
1,13
超线程核心示例
# cat /sys/devices/system/cpu/cpu13/topology/thread_siblings_list
1,13
第二个示例的输出与第一个示例完全相同。但是我们正在检查 cpu13
,第一个数字是 1
,所以 CPU 13 这是一个超线程核心。
关于Linux查找超线程核心id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274585/