Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Erlang Factory Lite - BEAM

Erlang Factory Lite - BEAM

Norberto Ortigoza

October 10, 2015
Tweet

Other Decks in Programming

Transcript

  1. ¡ B I E N V E N I D

    O S ! M Á Q U I N A V I R T U A L D E E R L A N G 1 A L I A S N O R B E R T O . O R T I G O Z A @ H I P H O O X
  2. Objetivo • Entender los principales conceptos detrás de la Máquina

    Virtual de Erlang (BEAM) • Entender algunas de las diferencias entre la BEAM y otras máquinas virtuales (JVM, V8)
  3. H I S T O R I A • Creada

    por Joe Armstrong, Robert Virding y Mike Williams • Primera versión, 1986 (Interprete de Prolog) • Segunda versión, 1988 (JAM) • Tercera versión, 1993 (BEAM) • Versión actual 18.0 3
  4. ¿ Q U É I N C L U Y

    E L A B E A M ? • Máquina virtual • Mecanismos para comunicarse con el mundo exterior • Ports y NIFs • Funciones inter construidas (BIFs) • No JIT 4
  5. ¿ P O R Q U É U S A

    R L A B E A M ? • Alta disponibilidad • Tolerancia a Fallos • Sistemas distribuidos • Escalabilidad 5
  6. H O Y VA M O S A V E

    R • Procesos • Schedulers • Manejo de Memoria 6
  7. Para empezar, vamos a hablar de un sistema que es

    tolerante a fallos, distribuido, escalable y tiene alta disponibilidad.
  8. • Cada computadora está aislada de las demás. • No

    comparten memoria u otros recursos. 12
  9. 14 Computadora A Proceso B Java App Proceso C Node.js

    App Mensajes Proceso A Erlang App
  10. • Cada programa está aislado dentro de un proceso del

    Sistema Operativo. • No comparten memoria u otros recursos. 15
  11. 16 Computadora A Proceso B Java App Proceso C Erlang

    App Mensajes Proceso A Node.js App
  12. ☹ • Los Módulos, Clases, Paquetes no están aislados. •

    Todos ellos comparten la misma memoria y otros recursos. Si algo sale mal todo el proceso del SO se muere. 18
  13. 20 Computadora A Proceso B Node.js App Proceso C Java

    App Mensajes Proceso A Erlang App
  14. 23 Computadora A Erlang Node Módulo Módulo Módulo Módulo Módulo

    Módulo Erlang Node Módulo Módulo Módulo Módulo Módulo Módulo Erlang Node Módulo Módulo Módulo Módulo Módulo Módulo
  15. 25

  16. 28 Proceso del SO BEAM Proceso de Erlang Proceso de

    Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang Proceso de Erlang
  17. S C H E D U L E R S

    • La BEAM crea un Thread del SO por cada core en la máquina. • Un Scheduler utiliza un Thread del SO. • Cada Scheduler tiene colas de ejecución. • Cada scheduler maneja su propia memoria. 29
  18. M Á Q U I N A V I RT

    U A L S C H E D U L E R S C H E D U L E R S C H E D U L E R S C H E D U L E R C P U O S T H R E A D C P U O S T H R E A D C P U O S T H R E A D C P U O S T H R E A D Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso Proceso
  19. S C H E D U L E R S

    • Hacen balanceo de carga. • Controlan la ejecución de los procesos • Cada proceso es re encolado para ejecución después de 2000 reducciones (Un proceso no puede apropiarse del procesador y bloquear otros procesos) 31
  20. M E M O R I A D E N

    T R O D E L A B E A M • Heap del proceso • Tablas de ETS • Tablas de Atomos (tamaño fijo) • Espacio para Binarios Grandes (> 64 bytes, Conteo de referencias) • Código • … 35
  21. H E A P D E L P R O

    C E S O • Permite recolectar cada proceso de forma independiente. • El Colector de basura es más eficiente. • El Colector de basura es más simple (No es necesario implementar un colector en tiempo real: Azul) • Disminuye la necesidad de sincronización entre threads (Esto es mejor entre mayor sea al número de procesadores) 36
  22. C O L E C T O R D E

    B A S U R A • Copying Collector • Generacional • 2 espacios o zonas: nueva y vieja • Datos nuevos son mantenidos en el espacio nuevo por un número determinado de colecciones, antes de pasar a la zona vieja. 37
  23. 43