05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.4. RoarVM<br />

is a problematic operation, too. Another <strong>de</strong>tail that needs to be consi<strong>de</strong>red is<br />

the approximately 10% space penalty imposed by the extra hea<strong>de</strong>r word we<br />

use as a backpointer from the object to the object table entry. In addition to<br />

assertion-checking for <strong>de</strong>bugging, this backpointer is required for the sweep<br />

phase of the garbage collector.<br />

As discussed in Sec. 8.1.3, the object table is disabled for the performance<br />

evaluation in or<strong>de</strong>r to avoid the performance overhead.<br />

4.4.3. Process-based Parallel VM<br />

Ungar and Adams implemented the VM for the TILE64 and used libraries<br />

that relied on operating system processes instead of threads to utilize the<br />

64 processor cores. When we ported the RoarVM to commodity multicore<br />

systems, we <strong>de</strong>ci<strong>de</strong>d to use traditional threads instead of the process-based<br />

variant. The main driver for this <strong>de</strong>cision was the absence of sufficient <strong>de</strong>bugging<br />

tools and that the initially used libraries were only available for the<br />

TILE64.<br />

However, the thread-based implementation is significantly slower than the<br />

process-based implementation. The performance cost for using thread-local<br />

variables instead of static globals is significant. T<strong>here</strong>fore, the <strong>de</strong>cision was<br />

revisited and a version using processes instead of threads was also implemented<br />

on classic Linux and Mac OS X systems. 8<br />

For this dissertation, the ability to use multiple operating system processes<br />

is relevant in the context of future work (cf. Sec. 9.5.3). It enables the VM to<br />

use different memory protection settings as an implementation technique for<br />

managed state (cf. Sec. 3.4). A similar approach has been used for instance<br />

by Hoffman et al. [2011].<br />

4.4.4. Final Remarks<br />

While the RoarVM is an interpreter and performance evaluation yields results<br />

that are not generalizable to high-performance VMs with JIT compilers, 9 the<br />

RoarVM as a research platform has a number of relevant features that facilitate<br />

experiments and opens opportunities for future research.<br />

The support for arbitrary additional words in front of objects greatly simplifies<br />

experiments that need to adapt the notion of objects and extend it with<br />

8 https://github.com/smarr/RoarVM/tree/features/processes-on-x86<br />

9 An addition of a JIT compiler to the RoarVM would be possible and it would improve the<br />

generalizability of the results, but it is outsi<strong>de</strong> of the scope of this dissertation.<br />

107

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!