我試圖用Linux上的pthreads調試一些性能問題,我認爲sched_getcpu()可能對我說謊。它會爲每個線程報告一個持續的CPU,而剖析實驗似乎表明這些線程實際上正在從一個核心遷移到另一個核心。sched_getcpu()在Linux上可靠嗎?
我想知道sched_cpu()
只是報告線程開始運行的第一個CPU,並且不知道線程遷移嗎?有沒有其他人注意到這一點,或看到任何證據表明sched_getcpu()
的返回值可能會改變?如果它不可靠,有沒有其他方法可以跟蹤當前的CPU(使用CPUID
也許?)?
感謝您的全面解答 - 我的內核版本似乎是3.10,所以它聽起來像我不應該看到這種行爲。我將不得不深入一點... –