Trilha Sênior Trilha

Ruby: mergulho no GVL

O curso estuda o Global VM Lock (GVL) do CRuby, a trava que protege o estado da própria máquina virtual. Ele mostra o que a trava protege dentro da VM e por que os seus dados compartilhados ficam de fora. As lições exibem um contador perdendo incrementos sem Mutex, explicam quando a trava é liberada em I/O, sleep e extensões C, e descrevem a preempção por timer e o escalonador M:N. No fim, o curso mede tempo de relógio contra tempo de CPU e aplica isso às threads do Puma e aos Ractors num processo Rails.

O que você vai aprender

  • ✓O que o GVL protege dentro da VM e o que fica sem proteção
  • ✓Por que um contador compartilhado precisa de Mutex mesmo com o GVL
  • ✓Quando a trava é liberada em I/O bloqueante, sleep e extensões C
  • ✓Como a preempção por timer e o escalonador M:N afetam as threads Ruby
  • ✓Como comparar tempo de relógio com tempo de CPU para achar trabalho preso no GVL
  • ✓Como definir o número de threads do Puma e avaliar Ractors num processo Rails
Prévia grátis · Aula 1 4 min de leitura

O lock e o nome dele

Dois engenheiros olham o mesmo gráfico. O Puma roda dezesseis threads, a máquina tem oito núcleos, e a CPU fica em 12% enquanto a latência p95 sobe. Um diz "o problema é o GIL". O outro diz "nem estamos presos em CPU, põe mais threads". Os dois discutem sobre uma trava que nenhum deles jamais mediu.

Ler a aula completa grátis →

Currículo

7 aulas
Digite para buscar...