GildaVM: a Non-Blocking I/O Architecture ...
Document type :
Communication dans un congrès avec actes
Title :
GildaVM: a Non-Blocking I/O Architecture for the Cog VM
Author(s) :
Polito, Guillermo [Auteur]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Tesone, Pablo [Auteur]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Miranda, Eliot [Auteur]
Cadence Design Systems [CDS]
Simmons, David [Auteur]
The Light Phone
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Tesone, Pablo [Auteur]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Miranda, Eliot [Auteur]
Cadence Design Systems [CDS]
Simmons, David [Auteur]
The Light Phone
Conference title :
IWST19 - International Workshop on Smalltalk Technologies
City :
Cologne
Country :
Allemagne
Start date of the conference :
2019-08-27
English keyword(s) :
virtual machines
multhreading
non-blocking I/O
foreign function calls
multhreading
non-blocking I/O
foreign function calls
HAL domain(s) :
Informatique [cs]/Langage de programmation [cs.PL]
English abstract : [en]
The OpenSmalltalk virtual machine (VM) was historically designed as a single-threaded VM. All VM code including the Smalltalk interpreter, the garbage collector and the just-in-time compiler run in the same single native ...
Show more >The OpenSmalltalk virtual machine (VM) was historically designed as a single-threaded VM. All VM code including the Smalltalk interpreter, the garbage collector and the just-in-time compiler run in the same single native thread. While this VM provides concurrency through green threads, it cannot take advantage of multi-core processors. This architecture performs really well in practice until the VM accesses external resources such as e.g., FFI callouts, which block the single VM thread and prevent green threads to benefit from the processor. In this paper we present GildaVM, a multi-threaded VM architecture where one thread at a time executes the VM while allowing non-blocking I/O in parallel. The ownership of the VM is orchestrated by a Global Interpreter Lock (GIL) as in the standard implementations of Python and Ruby. However, within a single VM thread concurrency is still possible through green threads. We present a prototype implementation of this architecture running on top of the Stack flavour of the OpenSmalltalk VM. We finally evaluate several aspects of this architecture like FFI and thread-switch overhead. While current benchmarks show good results for long FFI calls, short FFI calls require more research to minimize the overhead of thread-switch.Show less >
Show more >The OpenSmalltalk virtual machine (VM) was historically designed as a single-threaded VM. All VM code including the Smalltalk interpreter, the garbage collector and the just-in-time compiler run in the same single native thread. While this VM provides concurrency through green threads, it cannot take advantage of multi-core processors. This architecture performs really well in practice until the VM accesses external resources such as e.g., FFI callouts, which block the single VM thread and prevent green threads to benefit from the processor. In this paper we present GildaVM, a multi-threaded VM architecture where one thread at a time executes the VM while allowing non-blocking I/O in parallel. The ownership of the VM is orchestrated by a Global Interpreter Lock (GIL) as in the standard implementations of Python and Ruby. However, within a single VM thread concurrency is still possible through green threads. We present a prototype implementation of this architecture running on top of the Stack flavour of the OpenSmalltalk VM. We finally evaluate several aspects of this architecture like FFI and thread-switch overhead. While current benchmarks show good results for long FFI calls, short FFI calls require more research to minimize the overhead of thread-switch.Show less >
Language :
Anglais
Peer reviewed article :
Oui
Audience :
Internationale
Popular science :
Non
Collections :
Source :
Files
- https://hal.archives-ouvertes.fr/hal-02379275/document
- Open access
- Access the document
- https://hal.archives-ouvertes.fr/hal-02379275/document
- Open access
- Access the document
- https://hal.archives-ouvertes.fr/hal-02379275/document
- Open access
- Access the document
- document
- Open access
- Access the document
- main.pdf
- Open access
- Access the document