The design and implementation of a scalable concurrent virtual machine (Robert Virding)
-
Upload
ontico -
Category
Technology
-
view
311 -
download
0
description
Transcript of The design and implementation of a scalable concurrent virtual machine (Robert Virding)
Erlang Solutions Ltd.
© 1999-2011 Erlang Solutions Ltd.
The Design and Implementation of a Scalable, Concurrent Virtual Machine
Robert VirdingPrinciple Language Expert at Erlang Solutions Ltd.
© 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
2
© 1999-2011 Erlang Solutions Ltd.
Concurrency vs. Parallelism
• Parallelism is what the system provides
•Concurrency is a property of the problem/solution
(as good a definition as any)
3
© 1999-2011 Erlang Solutions Ltd.
Erlang is COP
Concurrency Oriented Programming
4
© 1999-2011 Erlang Solutions Ltd.
Problem domain/Erlang properties
• Light-weight concurrency
•Asynchronous message passing
• Process isolation
• Error handling
•Complex coordination
• Soft real-time
•Continuous evolution of system
5
© 1999-2011 Erlang Solutions Ltd.
Erlang is a functional language
• Immutable data
•No looping constructs
• Pattern matching is ubiquitous
6
© 1999-2011 Erlang Solutions Ltd.
The BEAM
The main Erlang implementation
Will cover:
• Processes/scheduling
•Memory management
•Communication
• Error handling
(Bogdan’s Erlang Abstract Machine)
7
© 1999-2011 Erlang Solutions Ltd.
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
8
© 1999-2011 Erlang Solutions Ltd.
Processes and scheduling
•One run-queue per thread
• Scheduled as cooperating coroutines
•Multi-core/multi-thread ➡ multi-queues- Process stealing
•No really viable alternatives
9
© 1999-2011 Erlang Solutions Ltd.
Memory management/GC
• Soft real-time requires unobtrusive GC
•Must ensure process isolation
• Stop-the-world collector
vs.
interactive/concurrent collector
- independent of parallelism
10
© 1999-2011 Erlang Solutions Ltd.
Memory management/GC
Alternatives:
• Shared heap
• Separate process heaps
•Hybrid
Erlang does NOT require separate heaps and message copying!
11
© 1999-2011 Erlang Solutions Ltd.
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
12
© 1999-2011 Erlang Solutions Ltd.
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
13
© 1999-2011 Erlang Solutions Ltd.
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 heaps14
© 1999-2011 Erlang Solutions Ltd.
Communication - asynchronous message passing
• Scales well
• Suits multi-core
- needs only limited synchronisation
• Suitable as a building block
15
© 1999-2011 Erlang Solutions Ltd.
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
•Miscellaneous16
© 1999-2011 Erlang Solutions Ltd.
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)
17
© 1999-2011 Erlang Solutions Ltd.
Erjang - Running Erlang code
•Uses BEAM VM assembler code as source to generate Java
- helps ensure compatibility
18
© 1999-2011 Erlang Solutions Ltd.
Erjang - Concurrency
•Uses Kilim to provide concurrency and message passing
- ??description??
•Cooperative coroutines
•Asynchronous message passing
19
© 1999-2011 Erlang Solutions Ltd.
Erjang - Scheduling
•One run-queue per thread
• Scheduled as cooperating coroutines
•Multi-core/multi-thread ➡ multi-queues
20
© 1999-2011 Erlang Solutions Ltd.
Erjang - Memory management/GC
•Uses standard JVM memory management/GC
- shared heap
- stop-the-world collector
➡Cannot guarantee soft real-time behaviour (yet)
21
© 1999-2011 Erlang Solutions Ltd.
Erjang - Miscellaneous
•Needs special handling for tail-call optimisation
(a must for functional languages)
22
© 1999-2011 Erlang Solutions Ltd.
• 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.
23
© 1999-2011 Erlang Solutions Ltd.
Questions?
Thank you
Robert Virding
24