2014-03-28 26 views
2

我很困惑與ThreadScope使用,當我想分析我的Haskell程序,並按照步驟:ThreadScope中核心編號的含義是什麼?

> ghc -threaded -eventlog -rtsopts --make test.hs 
> test.exe +RTS -ls -N2 
> threadscope test.exe.eventlog 

,我覺得在threadscope兩個核心,但是當我修改兩個步驟,如:

> test.exe +RTS -ls -N6 

(我實際上有四個核心在我的電腦中),threadscope在其用戶界面中顯示6個核心,這是什麼意思?

+0

如果您只是執行'test.exe + RTS -ls -N',會發生什麼?通過在'-N'之後不指定數字,它將使用計算機上所有可用的內核。這可能是因爲你有一個四核處理器,但是由於像超線程這樣的功能,在你的操作系統上看起來你有8個內核(這是我的電腦的情況)。 – bheklilr

回答

2

未芯,但HECs

程序將顯示在每個Haskell的執行上下文(HEC),其大致對應於一個操作系統線程的活性。當運行程序

-N[x]

使用x併發線程:

而且-N[x]將線程數設置爲x。通常應選擇x 以匹配 機器上的CPU內核數量。例如,在雙核機器上我們可能會使用 +RTS -N2 -RTS

省略x, 即+RTS -N -RTS,讓運行 選擇x本身 基於許多處理器如何在你的機器的價值。

而且因爲你使用-N6,你觀察6周的HEC。

相關問題