我應該選擇更高的 CPU/低頻寬還是稍慢的 CPU/更高的頻寬?

我應該選擇更高的 CPU/低頻寬還是稍慢的 CPU/更高的頻寬?

我有一些伺服器執行大量文件壓縮操作。這也意味著所有檔案都必須先遠端下載,然後才能壓縮並遠端上傳或遠端串流傳輸到客戶端。
我可以選擇升級舊伺服器或購買新伺服器。

舊的伺服器規格是關於3.1 GHz頻寬平均的100 Mbps。新的伺服器規格約為2.4 GHz,頻寬保證為1000 Mbps up to 2000 Mbps。在新的迭代中,記憶體使用量應保持不變或減少。

至此,我已經弄清楚了我的 RAM 和磁碟使用情況。這不是問題。問題在於 CPU 速度和頻寬如何影響串流下載。

這些都是我的選擇。
哪個選項更適合我的用例?

答案1

當目前伺服器執行這些「壓縮操作」時,您應該追蹤它們的 CPU 和頻寬使用情況。

如果他們使用 100% CPU,請選擇更快的 CPU;如果他們使用 100% 頻寬,請選擇更高的頻寬。


另外,請注意,無論標稱 GHz 值如何,較新的 CPU 都可能比舊的 CPU 快很多; CPU 核心的數量也相關(假設這些「壓縮操作」是多執行緒的和/或並行運行)。

答案2

如果你要找到一些「最佳」解決方案,你必須找出有多少資料可以通過你的資料匯流排,最佳方案是資料到達某個網路卡,從CPU讀取並直接壓縮到內存在網路卡。

假設你有

  • 2(這樣它們就不會因發送和接收而混淆)10GB 乙太網路卡,每 8 個 PCI Express 4 通道(每個通道 15GB/s),假設您可以獲得支援此功能的 MB。
  • 你投資一些實際上可以支援這個的CPU+MB,RyZen 5950X+x570

然後是記憶體吞吐量

  • 多於系統提供約 54GB/s 讀/寫或 48GB/s 複製
  • 乙太網路驅動器可能會將接收到的資料複製到記憶體(透過或不透過快取)
  • 您很可能還沒有受益於零拷貝發送更傾向於發送將導致 3-6 份。
  • 接收可能是相同的,但是CPU必須至少讀取一次才能壓縮它,如果幸運的話直接在快取中,如果不是從記憶體中,並且當它壓縮到快取時相同,NIC可以直接複製它到其內部發送緩衝區。

因此,最好的情況是,使用最好的 NIC、用戶級驅動程序,始終命中緩存

  • 從 NIC 複製到快取而不寫回 RAM
  • 從快取到快取的壓縮
  • 從快取複製到網路卡
  • 假設 32 個執行緒可以為其提供數據,您可以獲得 10 GB/s 的吞吐量

如果您無法存取這種幸運的情況,您很可能會受到記憶體頻寬的限制,因為

  • 假設有 3 個副本將資料移動到應用程式
  • 2 個副本用於載入到 zip 並儲存結果
  • 寄 3 份
  • 以及大量的快取寫回將其全部綁定在黑暗中

假設 7 次讀取和 7 次寫入,在最佳情況下,限制應約為 54GB/s / 14 = 3.85 GB/s。由於讀取/寫入次數較少,您很快就會達到 NIC 最大速度。

因此,從這裡您可以減少規格,直到滿足您的預算或需求。

我無法找到內存中多線程壓縮的任何數據。

相關內容