$30 off During Our Annual Pro Sale. View Details »

Golang além do "hello world"

Jefferson Otoni Lima
September 29, 2018
120

Golang além do "hello world"

Todos sabemos que o Goroutine é o poder supremo em Golang, a apresentação é uma simples abordagem de como funciona o Schedule do Go e como as Goroutines trabalham em conjunto com os processadores e suas respectivas threads.

Jefferson Otoni Lima

September 29, 2018
Tweet

Transcript

  1. s3wf.com
    @jeffotoni
    DevOps Belo Horizonte, Setembro 29 2018
    Jefferson Otoni
    Golang além do
    “hello world”
    t.me/devopsbh

    View Slide

  2. @jeffotoni
    O que é goroutines ?
    O que é channels ?
    01
    02
    03
    Por que goroutines é poderoso ?
    04
    05
    GOMAXPROCS o que é ?
    06
    Concorrência != Paralelismo

    View Slide

  3. O que é
    Goroutine?
    go func(c *int, p chan <- string){ .. }(c, p)

    View Slide

  4. https://rakyll.org/scheduler/
    P1 = processador
    M = Threads
    G = Goroutine
    GO SCHEDULER *V1

    View Slide

  5. M : N

    View Slide

  6. P1 = processador
    M = Threads
    G = Goroutine
    GO SCHEDULER *V2
    https://morsmachine.dk/go-scheduler
    http://supertech.csail.mit.edu/papers/steal.pdf
    M0
    M0
    M1 M1
    P
    Syscall
    G
    G
    G
    G
    G
    G
    G0
    P
    G0

    View Slide

  7. O que é
    GOMAXPROCS?

    View Slide

  8. Executando centenas de Goroutines

    View Slide

  9. $ GOMAXPROCS = 64

    View Slide

  10. CONCORRÊNCIA
    não é
    PARALELISMO
    http://whisperd.tech/post/go-channel/

    View Slide

  11. O que é
    CHANNELS ?

    View Slide

  12. CHANNELS
    &
    BUFFERS

    View Slide

  13. Criando contadores com ponteiros

    View Slide

  14. Tickers

    View Slide

  15. Workers super poderoso
    https://gobyexample.com/worker-pools
    Referência:

    View Slide

  16. GOROUTINES MEMORY USAGE
    Mem(GB) Goroutine
    1
    2
    4
    8
    16
    32
    370
    740k
    1.5M
    2.9M
    5.9M
    11.8
    Fonte: Concorrência em Go

    View Slide

  17. Por que
    Go é tão
    poderoso?

    View Slide

  18. Concorrência é poderosa.
    Concorrência não é paralelismo.
    Concorrência permite paralelismo.
    A Concorrência facilita o paralelismo (e escalonamento e tudo mais)
    Conclusão

    View Slide

  19. Thanks := &Obrigado{...}
    Obrigado...
    github.com/jeffotoni
    instagram.com/jeffotoni
    https://t.me/devopsbh
    https://t.me/go_br
    https://t.me/awsbrasil

    View Slide