Robert Virding
                                                            Principle Language Expert
                                                            at Erlang Solutions Ltd.




Erlang Solutions Ltd.
The Design and Implementation of
a Scalable, Concurrent Virtual
Machine
                        © 1999-2011 Erlang Solutions Ltd.
Erlang Solutions Ltd.

• The one stop shop for all your Erlang needs
• Founded in 1999, Offices in UK, Sweden and Poland
• Clients on six continents
• System development experience in:
   -   Telecom, banking, e-commerce, track & trace, VOIP, etc.

• We do:
   -   In-house system development, on-site consultancy, and
       contracting,
   -   Erlang-based recruitment and Professional training at all
       levels

                       © 1999-2011 Erlang Solutions Ltd.       2
Concurrency vs. Parallelism

• Parallelism is what the system provides
• Concurrency is a property of the problem/
  solution


             (as good a definition as any)




                    © 1999-2011 Erlang Solutions Ltd.   3
Erlang is COP

Concurrency Oriented Programming



           © 1999-2011 Erlang Solutions Ltd.   4
Problem domain/Erlang properties

• Light-weight concurrency
• Asynchronous message passing
• Process isolation
• Error handling
• Complex coordination
• Soft real-time
• Continuous evolution of system

                 © 1999-2011 Erlang Solutions Ltd.   5
Erlang is a functional language

• Immutable data
• No looping constructs
• Pattern matching is ubiquitous




                  © 1999-2011 Erlang Solutions Ltd.   6
The BEAM
The main Erlang implementation
Will cover:
• Processes/scheduling
• Memory management
• Communication
• Error handling
(Bogdan’s Erlang Abstract Machine)

                  © 1999-2011 Erlang Solutions Ltd.   7
Processes and scheduling

• Want light-weight concurency
• Must have processes (isolation)
➡Implement processes ourselves (green processes)

+ They are really light-weight
+ Complete control of scheduling
-   Not a general machine

                   © 1999-2011 Erlang Solutions Ltd.   8
Processes and scheduling

• One run-queue per thread
• Scheduled as cooperating coroutines
• Multi-core/multi-thread ➡ multi-queues
   -   Process stealing


• No really viable alternatives


                      © 1999-2011 Erlang Solutions Ltd.   9
Memory management/GC

• Soft real-time requires unobtrusive GC
• Must ensure process isolation
• Stop-the-world collector
  vs.
  interactive/concurrent collector
  -     independent of parallelism



                      © 1999-2011 Erlang Solutions Ltd.   10
Memory management/GC
Alternatives:


• Shared heap
• Separate process heaps
• Hybrid
   Erlang does NOT require separate
      heaps and message copying!
                 © 1999-2011 Erlang Solutions Ltd.   11
Memory management/GC

• Shared heap
• Reduces copying of data
• Complicates GC
  -   must use incremental/concurrent collector

• Less well-suited to multi-core
• Complicates handling of processes

                    © 1999-2011 Erlang Solutions Ltd.   12
Memory management/GC

• Separate process heaps
• Increases copying of data
• Simplifies GC
  -   can use stop-the-world per process collector

• Fits well on multi-core
• Scales well
• Simplifies handling of processes
                     © 1999-2011 Erlang Solutions Ltd.   13
Memory management/GC

• Hybrid heaps
• Reduces copying of data
  -   messages on shared heap

• May in part determined at compile-time
• Complicates GC
• Less well-suited on multi-core
• Erlang BEAM uses very restricted hybrid heaps
                   © 1999-2011 Erlang Solutions Ltd.   14
Communication - asynchronous
message passing

• Scales well
• Suits multi-core
  -   needs only limited synchronisation

• Suitable as a building block



                     © 1999-2011 Erlang Solutions Ltd.   15
Erjang - Erlang on the JVM

• A real Erlang on the JVM
• Will cover:
• Why the JVM?
• How it runs Erlang code
• How it does concurrency
• How it does scheduling
• Memory management/GC
• Miscellaneous   © 1999-2011 Erlang Solutions Ltd.   16
Erjang - Why the JVM?

• Wide-spread VM
• Very mature VM
• Improved interface between Erlang and other JVM
  languages
• Access to libraries

(Kresten wanted to learn Erlang)

                   © 1999-2011 Erlang Solutions Ltd.   17
Erjang - Running Erlang code

• Uses BEAM VM assembler code as source to
  generate Java
  -   helps ensure compatibility




                     © 1999-2011 Erlang Solutions Ltd.   18
Erjang - Concurrency

• Uses Kilim to provide concurrency and message
  passing
  -   ??description??

• Cooperative coroutines
• Asynchronous message passing



                        © 1999-2011 Erlang Solutions Ltd.   19
Erjang - Scheduling

• One run-queue per thread
• Scheduled as cooperating coroutines
• Multi-core/multi-thread ➡ multi-queues




                  © 1999-2011 Erlang Solutions Ltd.   20
Erjang - Memory management/GC

• Uses standard JVM memory management/GC
  -   shared heap
  -   stop-the-world collector
➡Cannot guarantee soft real-time behaviour (yet)




                     © 1999-2011 Erlang Solutions Ltd.   21
Erjang - Miscellaneous

• Needs special handling for tail-call optimisation
  (a must for functional languages)




                   © 1999-2011 Erlang Solutions Ltd.   22
•   The Erlang User Conference brings together the best minds and names in
    Erlang Programming

•   This year, the Erlang User Conference will be held in a brand new location
    – the exciting, spacious building of the München Bryggeriet.

•   An enticing addition to the 2011 conference will be two further tracks.

•   We will also be holding a day of tutorials on 4 November.

•   In the 3 days prior to the conference, 31 October – 2 November, we will be
    holding an Erlang University with a selection of Erlang courses suitable for
    all levels of expertise.




                             © 1999-2011 Erlang Solutions Ltd.                23
Questions?


               Thank you


               Robert Virding
     robert.virding@erlang-solutions.com




               © 1999-2011 Erlang Solutions Ltd.   24

The design and implementation of a scalable concurrent virtual machine (Robert Virding)

  • 1.
    Robert Virding Principle Language Expert at Erlang Solutions Ltd. Erlang Solutions Ltd. The Design and Implementation of a Scalable, Concurrent Virtual Machine © 1999-2011 Erlang Solutions Ltd.
  • 2.
    Erlang Solutions Ltd. •The one stop shop for all your Erlang needs • Founded in 1999, Offices in UK, Sweden and Poland • Clients on six continents • System development experience in: - Telecom, banking, e-commerce, track & trace, VOIP, etc. • We do: - In-house system development, on-site consultancy, and contracting, - Erlang-based recruitment and Professional training at all levels © 1999-2011 Erlang Solutions Ltd. 2
  • 3.
    Concurrency vs. Parallelism •Parallelism is what the system provides • Concurrency is a property of the problem/ solution (as good a definition as any) © 1999-2011 Erlang Solutions Ltd. 3
  • 4.
    Erlang is COP ConcurrencyOriented Programming © 1999-2011 Erlang Solutions Ltd. 4
  • 5.
    Problem domain/Erlang properties •Light-weight concurrency • Asynchronous message passing • Process isolation • Error handling • Complex coordination • Soft real-time • Continuous evolution of system © 1999-2011 Erlang Solutions Ltd. 5
  • 6.
    Erlang is afunctional language • Immutable data • No looping constructs • Pattern matching is ubiquitous © 1999-2011 Erlang Solutions Ltd. 6
  • 7.
    The BEAM The mainErlang implementation Will cover: • Processes/scheduling • Memory management • Communication • Error handling (Bogdan’s Erlang Abstract Machine) © 1999-2011 Erlang Solutions Ltd. 7
  • 8.
    Processes and scheduling •Want light-weight concurency • Must have processes (isolation) ➡Implement processes ourselves (green processes) + They are really light-weight + Complete control of scheduling - Not a general machine © 1999-2011 Erlang Solutions Ltd. 8
  • 9.
    Processes and scheduling •One run-queue per thread • Scheduled as cooperating coroutines • Multi-core/multi-thread ➡ multi-queues - Process stealing • No really viable alternatives © 1999-2011 Erlang Solutions Ltd. 9
  • 10.
    Memory management/GC • Softreal-time requires unobtrusive GC • Must ensure process isolation • Stop-the-world collector vs. interactive/concurrent collector - independent of parallelism © 1999-2011 Erlang Solutions Ltd. 10
  • 11.
    Memory management/GC Alternatives: • Sharedheap • Separate process heaps • Hybrid Erlang does NOT require separate heaps and message copying! © 1999-2011 Erlang Solutions Ltd. 11
  • 12.
    Memory management/GC • Sharedheap • Reduces copying of data • Complicates GC - must use incremental/concurrent collector • Less well-suited to multi-core • Complicates handling of processes © 1999-2011 Erlang Solutions Ltd. 12
  • 13.
    Memory management/GC • Separateprocess heaps • Increases copying of data • Simplifies GC - can use stop-the-world per process collector • Fits well on multi-core • Scales well • Simplifies handling of processes © 1999-2011 Erlang Solutions Ltd. 13
  • 14.
    Memory management/GC • Hybridheaps • Reduces copying of data - messages on shared heap • May in part determined at compile-time • Complicates GC • Less well-suited on multi-core • Erlang BEAM uses very restricted hybrid heaps © 1999-2011 Erlang Solutions Ltd. 14
  • 15.
    Communication - asynchronous messagepassing • Scales well • Suits multi-core - needs only limited synchronisation • Suitable as a building block © 1999-2011 Erlang Solutions Ltd. 15
  • 16.
    Erjang - Erlangon the JVM • A real Erlang on the JVM • Will cover: • Why the JVM? • How it runs Erlang code • How it does concurrency • How it does scheduling • Memory management/GC • Miscellaneous © 1999-2011 Erlang Solutions Ltd. 16
  • 17.
    Erjang - Whythe JVM? • Wide-spread VM • Very mature VM • Improved interface between Erlang and other JVM languages • Access to libraries (Kresten wanted to learn Erlang) © 1999-2011 Erlang Solutions Ltd. 17
  • 18.
    Erjang - RunningErlang code • Uses BEAM VM assembler code as source to generate Java - helps ensure compatibility © 1999-2011 Erlang Solutions Ltd. 18
  • 19.
    Erjang - Concurrency •Uses Kilim to provide concurrency and message passing - ??description?? • Cooperative coroutines • Asynchronous message passing © 1999-2011 Erlang Solutions Ltd. 19
  • 20.
    Erjang - Scheduling •One run-queue per thread • Scheduled as cooperating coroutines • Multi-core/multi-thread ➡ multi-queues © 1999-2011 Erlang Solutions Ltd. 20
  • 21.
    Erjang - Memorymanagement/GC • Uses standard JVM memory management/GC - shared heap - stop-the-world collector ➡Cannot guarantee soft real-time behaviour (yet) © 1999-2011 Erlang Solutions Ltd. 21
  • 22.
    Erjang - Miscellaneous •Needs special handling for tail-call optimisation (a must for functional languages) © 1999-2011 Erlang Solutions Ltd. 22
  • 23.
    The Erlang User Conference brings together the best minds and names in Erlang Programming • This year, the Erlang User Conference will be held in a brand new location – the exciting, spacious building of the München Bryggeriet. • An enticing addition to the 2011 conference will be two further tracks. • We will also be holding a day of tutorials on 4 November. • In the 3 days prior to the conference, 31 October – 2 November, we will be holding an Erlang University with a selection of Erlang courses suitable for all levels of expertise. © 1999-2011 Erlang Solutions Ltd. 23
  • 24.
    Questions? Thank you Robert Virding robert.virding@erlang-solutions.com © 1999-2011 Erlang Solutions Ltd. 24