2012-07-16 31 views
3

我正在SUN/Solaris上運行CC編譯器, 我有64個以上的線程由操作系統分配給不同的內核。 我很想知道是否有方法在運行時獲取不同線程的核心ID?在運行時找出特定線程的CPU內核

我沒有設置這些線程的親和力,我使用psrset來創建處理器集。

+3

第二次獲得它時,信息是否無效?我的意思是這個線程可以在不同的核心上運行。 – 2012-07-16 11:16:25

+0

@ Christian.K - 實際上,據我所知,如果你正在設置處理器集,並且運行的線程數少於設置的大小,那麼操作系統會嘗試映射每個集合槽的線程,這可能是線程可能最終運行在不同的內核上,但我仍然對它在特定時刻運行的內核感興趣。 – Michael 2012-07-16 11:21:38

+0

對不起,迂腐;-)但我的觀點正是關於「具體時刻」。目前你看看這個值,這個線程可能會關閉到另一個處理器。 – 2012-07-16 11:36:45

回答

1

我不知道是否有針對Solaris的特定系統調用,但可以使用便攜式hwloc函數庫和它的hwloc_get_last_cpu_location函數。

+0

謝謝,這似乎正是我需要的,我最大的問題之一是,我無法在此服務器上安裝任何東西。是否有cc編譯器的內置函數,甚至是某些asm命令,我可能會使用它們來實現相同的結果。還有一個選擇是,我將從頭開始綁定線程,然後我可以使用線程ID來映射核心ID - 這裏我的問題是我不知道在運行時會創建多少線程。 – Michael 2012-07-16 11:54:10

相關問題