提高Go的GOGC變數能提升效能

banq發表於2017-02-13
GOGC是Go語言用於垃圾回收效能微調,GOGC 變數是設定初始的垃圾收集百分比。 當新分配的資料與上一個收集之後剩餘的實時資料的比率達到該百分比時,觸發垃圾收集 。

這裡有一個設定權衡:“ 如果你想減少在GC上花費的總時間,增加GOGC,但是記憶體必須足夠大。 如果你的記憶體少,你只能用更頻繁的GC時間以節省記憶體,那麼降低GOGC值'。

A profiling adventure to speed up Go 一文中談到,他們使用Go進行大資料處理,使用很多goroutines作為管道進行資料處理,導致效能非常差,他們將GOGC設定為500以後,最大可能會使用70GB,每條記錄處理效能延遲從300μs降低110μs,使用Go 1.8RC3替代Go 1.6,每條記錄延遲又降低了 25μs到80μs。

相關文章