我正在尝试使用Intel超线程计算我的计算机上的进程利用率。
尝试进行计算时遇到一个问题:
我正在计算我的进程在物理核心上单独运行时所做的循环 当另一个进程(相同的进程)在另一个逻辑核心(相同的物理核心)上运行时计数它。
我发现我的流程正在进行的循环数量存在差异。我想这与我在超线程机器上运行的事实有关。
有没有办法知道我的流程的确切运行时间是什么,所以当我尝试计算流程利用率时,我可以将它添加到我的计算中?
答案 0 :(得分:2)
您只能知道进程占用逻辑CPU的时间。你不知道它使用了多少物理CPU,并没有真正定义它
超线程(或者至少是更现代的SMT)不能通过在两个线程之间划分物理CPU时间来工作。它的工作原理是将工作分配给CPU内的执行单元(并且有几个这样的单元)
因此,两个线程可以同时运行 - 有几个整数执行单元,还有一些(内存,浮点)。
底线 - 如果一个线程占用100%的逻辑CPU,则需要100%的CPU。这就是你能说的全部。