在TB RAM 下的Go 1.5 GC 效能
現代垃圾回收演算法已經有了顯著的改進,這就引出了Go的1.5 GC 是否可以的問題處理大量RAM,例如TB,
Go 1.5 GC 的基準
雖然似乎沒有專門測試具有TB 級RAM 的Go 1.5 GC 的已發布基準,但現有數據表明:
-
目前限制:在單一Go 進程中使用TB 級 RAM 目前是不切實際的,Linux 上的最大堆大小為 512 GB。
-
無暫停 GC: Go 1.5 GC 旨在顯著減少 GC 暫停,在後台工作而不停止應用程式。
-
GC 工作負載:對於使用大量 RAM 的應用程序,GC 工作負載(取決於指針計數、分配率和備用 RAM)變得比暫停時間更為重要。
-
最佳化的應用程式: 指針較低的應用程式即使堆很大,計數或低分配率也可能表現良好。
GC 中的因素工作負載
-
指針:應用程式物件圖中活動指針的數量。
-
分配率:的速率分配了哪些新物件。
-
備用RAM: 應用程式可用的未使用 RAM 量。
最佳化GC 的建議
要最佳化大型堆疊的GC 效能,請考慮:
- 編寫減少指標的程式碼計數。
- 使用sync.Pool 重複使用物件。
- 將大型資料結構移至物件圖之外,例如移入嵌入式資料庫或外部快取。
- 運行多個較小的資料結構-堆進程而不是單一大進程。
總體而言,Go 1.5 GC 顯著減少了暫停有時,其當前的局限性使得在單一進程中使用 TB 級 RAM 變得具有挑戰性。對於旨在有效利用大量 RAM 的應用程式來說,針對低 GC 工作負載進行最佳化至關重要。
以上是Go 1.5 的垃圾收集器可以有效處理 TB 級 RAM 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!