我正在研究一种工具,让学生自我评估他们的编程作业的表现.特别是,他们编写的程序是多线程的,我没有直接的方法来影响创建的线程数.我想在给定不同数量的内核的情况下比较其程序的性能(理想情况下,它们的程序应该大致成比例地加速它允许使用的内核数量).
我们可以将一个位掩码传递给Process.SetAffinity来控制程序使用的核心.
这在使用超线程并将每个物理核心分成两个逻辑核心的i5和i7机器上存在问题.我希望程序在两个/四个不同的物理内核上运行.在我的i7机器上,亲和力设置为3(核心0和1)的进程将大致与单个核心上的程序一样快(表示这些逻辑核心共享相同的物理核心),但亲和力设置为5(核心0和3)它运行得更快(表明这些内核使用不同的物理内核).但是,我没有找到一种可靠的方法(除了反复试验)来确定这一点.
我如何(没有实验)确定哪些逻辑核共享相同的物理核心?
(/ proc/cpuinfo具有我需要的信息,但在Windows机器上不可用.)