我有一個使用Intel TBB的32核心系統上運行的程序。 我遇到的問題是,當我將程序設置爲使用32個線程時,與16個線程(僅增加50%)相比,性能不夠好。但是,當我使用:linux中的taskset究竟做了什麼?
taskset 0xFFFFFFFF ./foo
這將鎖定進程到32核心,性能要好得多。
我有兩個以下問題:
- 爲什麼?默認情況下,操作系統無論如何都會使用32個線程程序的全部32個內核。
- 我假設即使使用
taskset
,操作系統也可以(將)交換虛擬線程和物理線程,即線程不被固定。我對嗎?
謝謝。
'操作系統會爲32個線程程序使用全部32個內核' - 你確定這個假設是有效的嗎? –