-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbalancer.html
29 lines (27 loc) · 1.78 KB
/
balancer.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
---
layout: default
title: Improving garbage collector
---
<h1>MemBalancer</h1>
<div style="color:#222;font-size:1rem">Marisa Kirisame, Pranav Shenoy, Pavel Panchekha</div>
<ul>
<li>Determine heap size for garbage collected runtime.</li>
<li>Review the space time tradeoff - the bigger the heap size is the faster it runs.</li>
<li>Although all heap size for a single heap is pareto optimal, for a system with multiple heaps it may not be.</li>
<li>This reflect the age old insight that optimality of subcomponent does not imply optimality of the whole system.</li>
<li>We introduce rule that gurantees global optimality.</li>
<li>Under such rule, extra memory grow sublinearly (squareroot) w.r.t working memory, as opposed to linearly.</li>
<li>Take memory away from big heap and give it to small heap, reflecting the law of marginal diminishing return.</li>
<li>Gets good result in v8 (the javascript compiler of chrome) and racket.
<li>Currently being implemented by <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1770763">firefox</a>,
<a href="https://chromium-review.googlesource.com/c/v8/v8/+/3929100">chromium</a>,
<a href="https://github.com/mmtk/mmtk-core/pull/724">mmtk</a>,
and <a href="https://github.com/JuliaLang/julia/pull/50144">julia</a></li>
<li>
Note that you can still use MemBalancer without having multiple runtimes.
A typical computer system is very rarely single-tenant.
Even with a single runtime, the application still keep software cache, alongside os filecache, swap, and whatnot.
Runtime taking more memory mean software caches of all form will suffer.
</li>
</ul>
<div> <a href="https://arxiv.org/abs/2204.10455">[paper]</a> <a href="resources/Balancer.pptx">[slides]</a> </div>