題 Debian機器中VirtualBox中Kubuntu的多線程性能很差


在虛擬機中運行多線程渲染軟件時,我們遇到了令人不快的性能問題。

我們在VirtualBox 4.0.10_Debianr72436中運行Kubuntu 12.04,它在Debian(6.0.6,2.6.32-5-amd64)計算服務器上無頭運行。它擁有2 * 6核心Intel Xeon X5660處理器,具有超線程功能,運行內存大約為64GB。我們通過TigerVNC Viewer for X版本1.1.0連接到VM。虛擬機目前設置為使用所有24個核心,但是當配置為降低計數(例如,12)時,可以觀察到下面描述的問題。

問題:

當我們只使用一個渲染線程運行渲染器時,它的運行速度可與我們在其他機器(英特爾酷睿2雙核MacBooks)上直接運行金屬時的速度相媲美。但是,隨著我們增加工作線程的數量,它僅略微加速(相當於1 / n),並且在大約5個線程處開始實際上減速。從8個線程開始,它甚至比單線程應用程序更慢。當渲染器直接在MacBook上的金屬上運行時,無論您指定多少線程運行,都沒有問題。例如,雙核CPU上的16個線程運行速度與雙線程實例一樣快。

然後,我們嘗試以令人驚訝的結果同時運行渲染器的多個單線程實例。當我們運行4個實例時,一切正常 - 它們以與一個實例類似的速度運行,但是當我們運行6個實例時,它們都會減慢大約50%!

我們還嘗試運行另一個渲染器(pbrt v.2)來測試其他人的表現以及他們的結果是否更好。它可以擴展到13個線程,但隨後它也放慢了速度(但不如我們的軟件那麼多)。

我們的渲染器是用Objective C和C以及彙編程序編寫的。我們在代碼中使用XADD和CAS操作來訪問共享數據。人們強烈懷疑這兩者可能是我們問題的根源。有什麼想法嗎?

BTW:由於服務器策略,我們無法安裝Obj-C運行時和其他所需的庫並直接在金屬上運行我們的軟件。

VM配置摘錄:

  • 內存大小:4000MB
  • 頁面融合:關閉
  • VRAM大小:12MB
  • HPET:關閉
  • 芯片組:piix3
  • 固件:BIOS
  • CPU數量:24
  • 合成Cpu:關閉
  • CPUID覆蓋:無
  • ACPI:開
  • IOAPIC:開
  • PAE:關閉
  • 時間偏移:0 ms
  • RTC:UTC
  • hardw是。 virt.ext:on
  • hardw是。 virt.ext exclusive:off
  • 嵌套分頁:打開
  • 大頁面:開啟
  • VT-x VPID:開啟
  • 3D加速:關閉
  • 2D視頻加速:關閉
  • 增加的運行級別:2
  • 配置的內存氣球大小:0 MB

3
2018-01-09 22:30


起源


你是否實現了自己的旋轉環或鎖?因為非常重要,例如,您不循環CAS操作。 (主要是因為它要求高速緩存行只由核心保存,即使比較失敗並且沒有寫入。自己做這些事情是 硬。請參閱評論 這個問題。) - David Schwartz


答案:


我在這裡吐痰,但...... 在GUI上,右鍵單擊Kubuntu實例並在未運行時選擇設置。 檢查你的CPU是否有限。您可能希望了解系統如何響應選擇20或22個CPU而不是24個來緩解虛擬機和主機盒之間的資源競爭。然後嘗試使用20個線程運行單個實例。我希望看到20個核心的機器上的CPU峰值,剩下的4個也會在努力跟上時增加到100%。除了VM之外,您是否在此計算機上運行其他應用程序?


0
2018-01-17 22:44