The Actor model has long been known to be great at modeling concurrent and parallel problems in a declarative, safe way. The challenge has always been the cost of this abstraction - implementing cheap message passing over a shared-nothing memory architecture while ensuring fairness is a tough ask. In this talk I shall go over how BEAM, with it's three decades of esoteric telecom engineering differs from Akka actors implemented over the JVM, arguably the most invested general purpose VM in existence today.

Along the way, we shall discover how design decisions affect performance at each step of a program's execution - from a global/per-process heap affecting GC latencies and throughput, a type system's effects at efficiency, to preemptive scheduling improving long tail latencies.

 
1 favorite thumb_down thumb_up 4 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist
 

Outline/structure of the Session

This talk shall be divided into 4 phases.

  • Quick summary of Erlang(BEAM) and Akka(JVM) design choices
  • Erlang Actors in depth
    • What's the true cost of message passing?
    • Latencies: Pre-emptive scheduling and Per-process GC
    • Supervision trees, Type-safety and Let-it-Crash
  • Akka Actors in depth
    • JVM shared-memory model - Perf benefits and consequences
    • Global GC - unpredictable long tail latencies
    • JVM advantages - JIT, Type System, Mixed Schedulers
  • Conclusion

Learning Outcome

This will be a deep-dive, and an attendee can expect to:

  1. Gain solid intuition into what makes BEAM truly unique at concurrency
  2. Tradeoffs of implementing the Actor model on a general purpose VM
  3. Have insights into what metrics/paradigms to consider when evaluating concurrency capabilities of a language.

Target Audience

Intermediate programmers who have worked with concurrent codebases and preferably dabbled with at least one functional language

schedule Submitted 4 weeks ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Francesco Cesarini
    By Francesco Cesarini  ~  5 days ago
    reply Reply

    I am also wondering if we could have 10-15 minutes of the presentation dedicated to OTP and AKKA behaviours? 

    • Pranav Rao
      By Pranav Rao  ~  3 days ago
      reply Reply

      Hello!

      In the time I had budgeted for this talk (20mins), I couldn't get into specific behaviors - ask/tell vs explicit handle_info/handle_call behaviors and the edge cases already solved for regarding actor initialization and shutdown in OTP. 

      If there's interest around this, I can come up with a 45min talk with an expanded charter.  

       

  • Naresh Jain
    By Naresh Jain  ~  1 week ago
    reply Reply

    Hi Pranav,

    Thanks for your proposal. The topic sounds interesting, however I'm not sure if you can cover all of this in 20 mins. Can you please give a rough time break up of your outline?

    Also in the video, it looks like the other person is speaking most of the time. Can you suggest at what point in the video you are presenting?

    • Pranav Rao
      By Pranav Rao  ~  3 days ago
      reply Reply

      Hello Naresh, 

      It's is a tight squeeze for 20 minutes, and I do have more material I could include - including remote actors, interop with native libraries, dirty schedulers, supervisor differences.   

      I had a tight deadline while submitting the proposal, so stuck to the parts I could do immediate justice to. Let me know if I can expand the charter of the talk. 

      About the linked Fifth Elephant video, my colleague Abhijit presented the work, mostly because it was a lightning talk of 15minutes.