Note for Golang Taipei Gathering #24


鮑承佑: go-swagger 踩雷分享

swagger.yaml 可以 generate golang code for web server


Genji Lu: Golang GC 演算法

  • Slides
  • Tri-color GC
    • mark phase & sweep phase
  • Write Barrier
  • Go GC: Prioritizing low latency and simplicity - The Go Blog
    • Golang 1.5 時的文章,以降低 latency 為主。
    • Golang 1.5 公佈了這個 low latency 為主的 Garbage Collector
  • tradeoff
    • Tricolor GC 能達到極短暫的 pause time,但相對的付出代價
      • heap size 不可預期性
      • 頻繁產生新物件時,throughput 會較低,CPU 時間花在 GC 上的比例較高
      • 潛在風險:記憶體破碎
  • 實測 GC example code
    • GODEBUG=gctrace=1
      • $ GODEBUG=gctrace=1 go run main.go
  • runtime/pprof
  • net/pprof
    • http://127.0.0.1:7777/debug/pprof
  • Golang 對 GC 的優化
    • 1.6: 在 rescan stack 階段會檢查自從上次 STW (stop-the-world) 之後該 goroutine 是否有執行過,否則不 scan 該 stack。
    • 1.7: 用一個 list 紀錄所有自從上次 STW 以後有執行過的 goroutine,在 rescane 階段不用 scan 所有 stack。
    • 1.8: 修改 write barrier 消除 stack re-scan 的必要性。
  • Related materials
    • GODEBUG | Dave Cheney
    • [译]GC专家系列1:理解Java垃圾回收 - 牧曦之晨 - SegmentFault
      • STW:「回到垃圾回收上,在開始學習GC之前你應該知道一個詞:stop-the-world。不管選擇哪種GC算法,stop-the-world都是不可避免的。Stop-the-world意味著從應用中停下來並進入到GC執行過程中去。一旦Stop-the-world發生,除了GC所需的線程外,其他線程都將停止工作,中斷了的線程直到GC任務結束才繼續它們的任務。GC調優通常就是為了改善stop-the-world的時間。」


Linzy: 介紹 Testify 的 mock 功能


Stan Lo: Rooby: A new object oriented language written in Go aim at developing microservice efficiently

是這篇寫自己的程式語言(For Rubyist) – Stan Lo – Medium 的作者本人耶


Share


Donation

如果覺得這篇文章對你有幫助, 除了留言讓我知道外, 或許也可以考慮請我喝杯咖啡, 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。

If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.


Related Posts