32核(每個物理核)2.2 GhZ還是12核(6個物理核)3.0GHZ?
我正在開發一個多執行緒應用程序(基於 C# 建構的外匯交易應用程序),並將客戶端從 12 核 3.0GHZ 機器(英特爾)升級到 32 核 2.2Ghz 機器(AMD)。當使用多核進行整數、浮點和其他計算時,PassMark 基準測試結果明顯更高,而對於單核計算,它比包慢一點(其他與 12 核類似的配置進行比較)。哦,它還配備了 64 GB RAM(是另一個的 4 倍)和更快的 SSD。
因此,在該機器上配置和執行應用程序後,它不僅性能不佳,而且速度明顯變慢。我們說的是 30 秒 - 在通常在 5-20 秒內完成處理的應用程序上慢 1 分鐘。該應用程序使用 MAX DEGREE of PARALLELISM (TPL),我嘗試將其設置為核心數量以及其中的一半。我也嘗試過執行單執行緒並且沒有在並行執行緒中設置任何限制。
雖然可能是硬體有一些問題,但我想知道 CPU 處理速度是否是問題所在。我可以超頻到 3.0 GHZ。但這甚至是一個好主意嗎?
伺服器資訊 -
AMD http://www.passmark.com/forum/showthread.php?4013-AMD-Dual-6272-performance-is-60-lower-than-benchmarks 似乎從正式開始基準測試是錯誤的。
英特爾 i7 3930k
作業系統(兩者相同) Windows 7 Professional 64 位
相關問題 - https://stackoverflow.com/questions/7747573/net-performance-on-amd-processor
編輯 我看到很多有用的資訊。我現在想稍微修改一下這個問題——暫時忘記英特爾處理器。AMD 系統可以做些什麼來充分利用它?我們正在研究分析。我們已經讓 DBA 查看了索引、碎片和其他參數,例如 I/O 使用情況。與基於 Intel 的 CPU 相比,讀寫操作似乎要多得多。我看到了一個關於基於 AMD 的優化的答案。除了使用 OpenCL 之外,還有其他方法嗎?超頻怎麼樣?那會煮CPU嗎?在擁有方面 - 我看到人們對我很生氣!PC 正在銷售中,老闆和我討論了可用資源(4 倍的 RAM、幾乎 3 倍的 CPU 和更快的驅動程序 SSD)是否會幫助我們獲得很多性能。我們一直在尋求從軟體端對其進行調整,但它沒有 t(我不會說沒有)原來是我們正在尋找/希望的神奇的一擊。我確實對此感到有點悲慘——因此這篇文章很長。
更多編輯 我只是希望一些 AMD 代表會說這是公牛**** 你做錯了!您忽略了這一點並且沒有使用此功能。更糟糕的是,我讀到 AMD 今年虧損巨大,正在等待救助。:(
讓我說清楚。您基於預感和單一基準升級了客戶端?
這是一個錯誤。基準完全是人為的,並不反映現實世界的程序將如何執行。我會說它們確實提供了潛在性能的指示。
首先,要讓應用程序在多個核心上執行良好並有效地使用所有可用記憶體,還有很多工作要做。
許多應用程序在編寫時並未考慮到大並發性,並且並非所有問題域都適合併發解決方案。您的應用程序的瓶頸可能是共享記憶體周圍的鎖定。
例如,我看到並發應用程序的圖表似乎可以很好地擴展到 4 個執行緒,但是隨著執行緒數量的增加,性能沒有明顯的原因線性下降。這是資源匱乏的跡象。鎖真的很貴。考慮使用無鎖結構或最小化共享資源的數量和執行緒之間的互動。
另一個減速可能與記憶體有關。一個非常有趣的例子是 lz4 壓縮器。早期版本非常快,但另一個更複雜的壓縮器(snappy)提供了類似的性能。原因在於記憶體的使用方式。不要小看這一點。如果你知道你在做什麼,你可以將一些算法和資料結構加速很多倍,這正是 LZ4 的作者所做的。
出於興趣,請參閱以下連結:http: //fastcompression.blogspot.co.nz/2011/06/lz4-improved-performance.html
不過,我要做的第一件事是在 32 核系統上執行您的程式碼,看看您是否可以分析它以了解它在哪里花費時間。應該是帶鎖的吧。此外,嘗試減少執行緒數並再次進行基準測試。您可能會發現性能有所提高——事實上我認為這是可能的。