The “halfword” Virtual Machine
The 64bit Erlang Virtual machine can host very large Erlang applications. However, the amount of memory consumed for an ordinary Erlang process is doubled compared to a 32bit virtual machine. Memory bandwidth is a bottleneck in modern computer environments, so wasting memory on 64bit heaps (with e.g. 128 bits consumed for every character in a string) is a problem. The halfword virtual machine addresses these problems for applications having vast amounts of data in ETS tables and binaries, but does not need more than 4GB of primary memory for regular Erlang processes – a class of applications that is quite common. Using the halfword virtual machine gets you the best of two worlds – even higher speed than with any of the ordinary virtual machines, but a huge memory address range for data stored in i.e. mnesia and ETS and as binaries.
The linux halfword virtual machine has been in OTP since the R14B02 release, but few people know about it and ever consider using it, a fact that we want to change.
Talk objectives: To describe the halfword virtual machine, it’s inner workings and what you can gain from using it. A lot of applications would have use for it, but few people knows what this is and how it works.
Talk audience: Developers and people with a general interest in how the virtual machine works.
Patrik Nyblom Erlang VM developer and OTP team member
Patrik Nyblom has worked in the Ericsson OTP project developing the beam
virtual machine and Erlang core libraries for nearly fifteen years and is
the current team leader of the OTP virtual machine team.
His work includes, but is not limited to: Large parts of the ETS
implementation, the re module, unicode support, parts of the SMP support
and various ports to different operating systems.
Patrik also lectures from time to time at Stockholm University, mainly
regarding parallel programming and multi-core support.