The Garbage Collection Cost For Meta-Tracing JIT-based Dynamic Languages.

CASCON '22: Proceedings of the 32nd Annual International Conference on Computer Science and Software Engineering(2022)

引用 0|浏览2
暂无评分
摘要
Garbage collection is a mature field but the cost of GC varies for dif­ferent applications and depends on certain implementation details of a programming language. While automatic memory manage­ment is dominant in mainstream programming languages, garbage collection in dynamic languages like Python and Ruby has been criticized and associated with significant overhead, poor latency and exorbitant memory consumption. However, these criticisms have not been backed by detailed studies. In this paper, we use a language-independent GC workload char­acterization technique to tease apart the different GC events and study the cost of garbage collection (GC) on several real-world Python workloads. We use the Eclipse OMR GC framework to implement garbage collectors in a Python implementation, called PyPy. We find that garbage collection slows startup and request pro­cessing for web servers by almost 2X. Its memory consumption is also high for certain machine learning constructs like data frames, by more than 60% in some cases. Even when using incremental tenure region collection, current GC pauses are still detrimental to gaming applications, characterized by low frame-per-second rates. We also find that JIT tracing contributes to GC and memory pressure. Tracing ]!Ts have been successful in meta-tracing inter­preters and in certain scientific computing applications, but the tracing process itself introduces overheads. To this end, we pro­pose trace-based profiling to reduce memory and GC overhead by dynamically setting the trace size at runtime. We implement the profiling technique in the RPython framework, and register about 2%-10% performance improvement when we use it in PyPy and Pycket, a Racket implementation.
更多
查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要