我正在SUN/Solaris上運行CC編譯器, 我有64個以上的線程由操作系統分配給不同的內核。 我很想知道是否有方法在運行時獲取不同線程的核心ID?在運行時找出特定線程的CPU內核
我沒有設置這些線程的親和力,我使用psrset來創建處理器集。
我正在SUN/Solaris上運行CC編譯器, 我有64個以上的線程由操作系統分配給不同的內核。 我很想知道是否有方法在運行時獲取不同線程的核心ID?在運行時找出特定線程的CPU內核
我沒有設置這些線程的親和力,我使用psrset來創建處理器集。
我找到了答案:Solaris上的getcpuid()返回核心ID(即使是超線程): 我測試過它,它工作得很好。 http://www.unix.com/man-page/all/3c/getcpuid/
記得稍後再接受你的回答;) – Shahbaz 2012-07-16 12:34:57
第二次獲得它時,信息是否無效?我的意思是這個線程可以在不同的核心上運行。 – 2012-07-16 11:16:25
@ Christian.K - 實際上,據我所知,如果你正在設置處理器集,並且運行的線程數少於設置的大小,那麼操作系統會嘗試映射每個集合槽的線程,這可能是線程可能最終運行在不同的內核上,但我仍然對它在特定時刻運行的內核感興趣。 – Michael 2012-07-16 11:21:38
對不起,迂腐;-)但我的觀點正是關於「具體時刻」。目前你看看這個值,這個線程可能會關閉到另一個處理器。 – 2012-07-16 11:36:45