Introduces bookmarking collection, a GC algorithm that works with the virtual memory manager to eliminate paging. Just before memory is paged out, the collector "bookmarks" the targets of pointers from the pages. Using these bookmarks, BC can perform full garbage collections without loading the pages back from disk. By performing in-memory garbage collections, BC can speed up Java programs by orders of magnitude (up to 41X).
Open and online: connections, community and reality Catherine Cronin
Slides for Open Education Week webinar by Catherine Cronin & Sheila McNeill, hosted by the University of Sussex.
Webinar recording available here: https://connectpro.sussex.ac.uk/p96542464/
Open and online: connections, community and reality Catherine Cronin
Slides for Open Education Week webinar by Catherine Cronin & Sheila McNeill, hosted by the University of Sussex.
Webinar recording available here: https://connectpro.sussex.ac.uk/p96542464/
Download some lyrical love! A beautiful story of love between my youngest son Andy's toy puppies - 'Sandy' and 'Jess', set to the music 'Look of Love' by Dusty Springfield
Java Performance Fundamental 세미나 교재입니다. 3장은 Garbage Collection에 대해 설명하고 있습니다. 먼저 JVM에서 사용하는 Garbage Collection 뿐만 아니라 일반적인 Garbage Collection의 Algorithm을 상세히 알아봅니다. 그 후 Hotspot JVM의 Heap구조와 Garbage Collector를 설명하고 Generation별로 어떻게 동작하는 지에 대해 설명합니다. 이어 IBM JVM에 대한 Heap 구조와 Garbage Collector에 대해서도 설명합니다.
* Garbage Collection 이란?
* Garbage Collection 의 대상
* Garbage Collection 의 기본 Algorithm
* Hotspot JVM의 Garbage Collection
o Serial Collector
o Incremental Collector
o Parallel Collector
o CMS Collector
o Parallel Compaction Collector
o Garbage First Collector
* IBM JVM의 Garbage Collection
o Optimize for Throughput Collector
o Optimize for Pause Time Collector
o Generational Concurrent Collector
o Subpool Collector
Doppio: Breaking the Browser Language BarrierEmery Berger
Web browsers have become a de facto universal operating system, and JavaScript its instruction set. Unfortunately, running other languages in the browser is not generally possible. Translation to JavaScript is not enough because browsers are a hostile environment for other languages. Previous approaches are either non-portable or require extensive modifications for programs to work in a browser.
This talk presents Doppio, a JavaScript-based runtime system that makes it possible to run unaltered applications written in general- purpose languages directly inside the browser. Doppio provides a wide range of runtime services, including a file system that enables local and external (cloud-based) storage, an unmanaged heap, sockets, blocking I/O, and multiple threads. We demonstrate Doppio's usefulness with two case studies: we extend Emscripten with Doppio, letting it run an unmodified C++ application in the browser with full functionality, and present DoppioJVM, an interpreter that runs unmodified JVM programs directly in the browser. While substantially slower than a native JVM, DoppioJVM makes it feasible to directly reuse existing, non compute-intensive code.
Dthreads is an efficient deterministic multithreading system for unmodified C/C++ applications that replaces the pthreads library. Dthreads enforces determinism in the face of data races and deadlocks. It is easy to use: just link your program with -ldthread instead of -lpthread.
Dthreads can be downloaded from its source code repo on GitHub (https://github.com/plasma-umass/dthreads). A technical paper describing Dthreads appeared at SOSP 2012 (https://github.com/plasma-umass/dthreads/blob/master/doc/dthreads-sosp11.pdf?raw=true).
Multithreaded programming is notoriously difficult to get right. A key problem is non-determinism, which complicates debugging, testing, and reproducing errors. One way to simplify multithreaded programming is to enforce deterministic execution, but current deterministic systems for C/C++ are incomplete or impractical. These systems require program modification, do not ensure determinism in the presence of data races, do not work with general-purpose multithreaded programs, or run up to 8.4× slower than pthreads.
This talk presents Dthreads, an efficient deterministic multithreading system for unmodified C/C++ applications that replaces the pthreads library. Dthreads enforces determinism in the face of data races and deadlocks. Dthreads works by exploding multithreaded applications into multiple processes, with private, copy-on-write mappings to shared memory. It uses standard virtual memory protection to track writes, and deterministically orders updates by each thread. By separating updates from different threads, Dthreads has the additional benefit of eliminating false sharing. Experimental results show that Dthreads substantially outperforms a state-of-the-art deterministic runtime system, and for a majority of the benchmarks we evaluated, matches and occasionally exceeds the performance of pthreads.
Humans can perform many tasks with ease that remain difficult or impossible for computers. Crowdsourcing platforms like Amazon's Mechanical Turk make it possible to harness human-based computational power on an unprecedented scale. However, their utility as a general-purpose computational platform remains limited. The lack of complete automation makes it difficult to orchestrate complex or interrelated tasks. Scheduling human workers to reduce latency costs real money, and jobs must be monitored and rescheduled when workers fail to complete their tasks. Furthermore, it is often difficult to predict the length of time and payment that should be budgeted for a given task. Finally, the results of human-based computations are not necessarily reliable, both because human skills and accuracy vary widely, and because workers have a financial incentive to minimize their effort.
This talk presents AutoMan, the first fully automatic crowdprogramming system. AutoMan integrates human-based computations into a standard programming language as ordinary function calls, which can be intermixed freely with traditional functions. This abstraction allows AutoMan programmers to focus on their programming logic. An AutoMan program specifies a confidence level for the overall computation and a budget. The AutoMan runtime system then transparently manages all details necessary for scheduling, pricing, and quality control. AutoMan automatically schedules human tasks for each computation until it achieves the desired confidence level; monitors, reprices, and restarts human tasks as necessary; and maximizes parallelism across human workers while staying under budget.
AutoMan is available for download at www.automan-lang.org.
Heap-based attacks depend on a combination of memory management errors and an exploitable memory allocator. Many allocators include ad hoc countermeasures against particular exploits, but their effectiveness against future exploits has been uncertain.
This paper presents the first formal treatment of the impact of allocator design on security. It analyzes a range of widely-deployed memory allocators, including those used by Windows, Linux, FreeBSD, and OpenBSD, and shows that they remain vulnerable to attack. It then presents DieHarder, a new allocator whose design was guided by this analysis. DieHarder provides the highest degree of security from heap-based attacks of any practical allocator of which we are aware, while imposing modest performance overhead. In particular, the Firefox web browser runs as fast with DieHarder as with the Linux allocator.
Download some lyrical love! A beautiful story of love between my youngest son Andy's toy puppies - 'Sandy' and 'Jess', set to the music 'Look of Love' by Dusty Springfield
Java Performance Fundamental 세미나 교재입니다. 3장은 Garbage Collection에 대해 설명하고 있습니다. 먼저 JVM에서 사용하는 Garbage Collection 뿐만 아니라 일반적인 Garbage Collection의 Algorithm을 상세히 알아봅니다. 그 후 Hotspot JVM의 Heap구조와 Garbage Collector를 설명하고 Generation별로 어떻게 동작하는 지에 대해 설명합니다. 이어 IBM JVM에 대한 Heap 구조와 Garbage Collector에 대해서도 설명합니다.
* Garbage Collection 이란?
* Garbage Collection 의 대상
* Garbage Collection 의 기본 Algorithm
* Hotspot JVM의 Garbage Collection
o Serial Collector
o Incremental Collector
o Parallel Collector
o CMS Collector
o Parallel Compaction Collector
o Garbage First Collector
* IBM JVM의 Garbage Collection
o Optimize for Throughput Collector
o Optimize for Pause Time Collector
o Generational Concurrent Collector
o Subpool Collector
Doppio: Breaking the Browser Language BarrierEmery Berger
Web browsers have become a de facto universal operating system, and JavaScript its instruction set. Unfortunately, running other languages in the browser is not generally possible. Translation to JavaScript is not enough because browsers are a hostile environment for other languages. Previous approaches are either non-portable or require extensive modifications for programs to work in a browser.
This talk presents Doppio, a JavaScript-based runtime system that makes it possible to run unaltered applications written in general- purpose languages directly inside the browser. Doppio provides a wide range of runtime services, including a file system that enables local and external (cloud-based) storage, an unmanaged heap, sockets, blocking I/O, and multiple threads. We demonstrate Doppio's usefulness with two case studies: we extend Emscripten with Doppio, letting it run an unmodified C++ application in the browser with full functionality, and present DoppioJVM, an interpreter that runs unmodified JVM programs directly in the browser. While substantially slower than a native JVM, DoppioJVM makes it feasible to directly reuse existing, non compute-intensive code.
Dthreads is an efficient deterministic multithreading system for unmodified C/C++ applications that replaces the pthreads library. Dthreads enforces determinism in the face of data races and deadlocks. It is easy to use: just link your program with -ldthread instead of -lpthread.
Dthreads can be downloaded from its source code repo on GitHub (https://github.com/plasma-umass/dthreads). A technical paper describing Dthreads appeared at SOSP 2012 (https://github.com/plasma-umass/dthreads/blob/master/doc/dthreads-sosp11.pdf?raw=true).
Multithreaded programming is notoriously difficult to get right. A key problem is non-determinism, which complicates debugging, testing, and reproducing errors. One way to simplify multithreaded programming is to enforce deterministic execution, but current deterministic systems for C/C++ are incomplete or impractical. These systems require program modification, do not ensure determinism in the presence of data races, do not work with general-purpose multithreaded programs, or run up to 8.4× slower than pthreads.
This talk presents Dthreads, an efficient deterministic multithreading system for unmodified C/C++ applications that replaces the pthreads library. Dthreads enforces determinism in the face of data races and deadlocks. Dthreads works by exploding multithreaded applications into multiple processes, with private, copy-on-write mappings to shared memory. It uses standard virtual memory protection to track writes, and deterministically orders updates by each thread. By separating updates from different threads, Dthreads has the additional benefit of eliminating false sharing. Experimental results show that Dthreads substantially outperforms a state-of-the-art deterministic runtime system, and for a majority of the benchmarks we evaluated, matches and occasionally exceeds the performance of pthreads.
Humans can perform many tasks with ease that remain difficult or impossible for computers. Crowdsourcing platforms like Amazon's Mechanical Turk make it possible to harness human-based computational power on an unprecedented scale. However, their utility as a general-purpose computational platform remains limited. The lack of complete automation makes it difficult to orchestrate complex or interrelated tasks. Scheduling human workers to reduce latency costs real money, and jobs must be monitored and rescheduled when workers fail to complete their tasks. Furthermore, it is often difficult to predict the length of time and payment that should be budgeted for a given task. Finally, the results of human-based computations are not necessarily reliable, both because human skills and accuracy vary widely, and because workers have a financial incentive to minimize their effort.
This talk presents AutoMan, the first fully automatic crowdprogramming system. AutoMan integrates human-based computations into a standard programming language as ordinary function calls, which can be intermixed freely with traditional functions. This abstraction allows AutoMan programmers to focus on their programming logic. An AutoMan program specifies a confidence level for the overall computation and a budget. The AutoMan runtime system then transparently manages all details necessary for scheduling, pricing, and quality control. AutoMan automatically schedules human tasks for each computation until it achieves the desired confidence level; monitors, reprices, and restarts human tasks as necessary; and maximizes parallelism across human workers while staying under budget.
AutoMan is available for download at www.automan-lang.org.
Heap-based attacks depend on a combination of memory management errors and an exploitable memory allocator. Many allocators include ad hoc countermeasures against particular exploits, but their effectiveness against future exploits has been uncertain.
This paper presents the first formal treatment of the impact of allocator design on security. It analyzes a range of widely-deployed memory allocators, including those used by Windows, Linux, FreeBSD, and OpenBSD, and shows that they remain vulnerable to attack. It then presents DieHarder, a new allocator whose design was guided by this analysis. DieHarder provides the highest degree of security from heap-based attacks of any practical allocator of which we are aware, while imposing modest performance overhead. In particular, the Firefox web browser runs as fast with DieHarder as with the Linux allocator.
Quantifying the Performance of Garbage Collection vs. Explicit Memory ManagementEmery Berger
This talk answers an age-old question: is garbage collection faster/slower/the same speed as malloc/free? We introduce oracular memory management, an approach that lets us measure unaltered Java programs as if they used malloc and free. The result: a good GC can match the performance of a good allocator, but it takes 5X more space. If physical memory is tight, however, conventional garbage collectors suffer an order-of-magnitude performance penalty.
DieHard: Probabilistic Memory Safety for Unsafe LanguagesEmery Berger
DieHard uses randomization and replication to transparently make C and C++ programs tolerate a wide range of errors, including buffer overflows and dangling pointers. Instead of crashing or running amok, DieHard lets programs continue to run correctly in the face of memory errors with high probability. Using DieHard also makes programs highly resistant to heap-based hacker attacks. Downloadable at www.diehard-software.org.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Connector Corner: Automate dynamic content and events by pushing a button
Garbage Collection without Paging
1. Garbage Collection
Without Paging
Matthew Hertz, Yi Feng,
Emery Berger
University of Massachusetts Amherst
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
2. Garbage Collection Performance
Garbage collection now performs
reasonably well
High throughput
Low pause times
Given large heap and sufficient memory
But: what happens when there’s not
enough RAM?
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
3. GC Performance While Paging
RAM
Hard Disk
Heap: most pages in RAM, one on disk
GC begins
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
4. GC Performance While Paging
RAM
Hard Disk
Collector touches an evicted page...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
5. GC Performance While Paging
RAM
Hard Disk
... bringing the page into memory ...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
6. GC Performance While Paging
RAM
Hard Disk
... but triggers another page eviction.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
7. GC Performance While Paging
RAM
Hard Disk
... but triggers another page eviction.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
8. GC Performance While Paging
RAM
Hard Disk
Collector touches newly-evicted page...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
9. GC Performance While Paging
RAM
Hard Disk
Collector touches newly-evicted page...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
10. GC Performance While Paging
RAM
Hard Disk
... leading to the eviction of yet another page…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
11. GC Performance While Paging
RAM
Hard Disk
… which eventually triggers more paging.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
12. Program Throughput
Execution Time of pseudoJBB w/ 77MB Heap
600
GenCopy
500 GenMS
Execution Time (in s)
400
300
200
100
0
212 163 153 143 133 123 113 103 93
Available Memory
Paging causes a 40 to 62-fold increase in runtime
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
13. Outline
Motivation
GC without paging
Cooperative garbage collection
Bookmarking
Results
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
14. The problem
Garbage collector: VM-oblivious
Examines all reachable objects
Lacks knowledge of page residency
Treats evicted and resident pages identically
Virtual memory: GC-oblivious
GC & application have different access
patterns
Likely to evict pages needed by GC
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
15. Cooperative Garbage Collection
Bookmarking Extended virtual
collector memory manager
page eviction
notification
Select victim(s)
Page
Update
replacement
victim page(s)
residency
In response to notifications, BC:
Adjusts heap size to fit in main memory
Prevents eviction of important pages
Avoids touching non-resident pages
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
16. Avoiding Page Evictions
0 0 0 0 0
RAM
Hard Disk
When notified, avoid a pending eviction…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
17. Avoiding Page Evictions
0 0 0 0 0
RAM
Hard Disk
…find a page BC knows to be empty…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
18. Avoiding Page Evictions
0 0 0 0 0
RAM
Hard Disk
… and discard it…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
19. Avoiding Page Evictions
0 0 0 0
RAM
Hard Disk
… eliminating the need to evict a page.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
20. Limit of Heap Sizing
Could collect, compact, compress, etc.
Eventually:
Will run out of pages to discard
Going to have to evict non-empty pages
Result: Paging
Can we avoid this?
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
21. Bookmarks
We introduce bookmarks:
Summaries of connectivity info on
evicted pages
References from objects on the page
These summaries enable GC w/o paging
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
22. Bookmarking
0 0 0 0
RAM
Hard Disk
Process page before eviction…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
23. Bookmarking
0 0 0 0
B
B
RAM
Hard Disk
... by following pointers & bookmark-ing targets...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
24. Bookmarking
1
0 0 0 0
B
B
RAM
Hard Disk
... increment the referring page count...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
25. Bookmarking
0 0 1 0
B B
B B B
B B
RAM
Hard Disk
... conservatively bookmark objects on the page...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
26. Bookmarking
1
0 0 0
B
B
RAM
0
B B
B B
B
Hard Disk
... then tell extended VM to evict the page.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
27. Bookmarking Details
Cheap summary of connectivity
One bit per object: free
One word per page: referring page count
Bookmarks cleared when count = zero
Use bookmarks as secondary roots
during garbage collection
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
28. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
Process objects as usual, but...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
29. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
... ignore any references to evicted pages.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
30. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
Use bookmarks to recreate evicted references...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
31. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
... and continue collection.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
32. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
Result: Garbage collection without paging!
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
33. Collection with Bookmarks
0 1 0
roots
B
B
RAM
0
B B
B B
B
Hard Disk
Note: can waste space on evicted pages.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
34. Bookmarking Incompleteness
Space waste not just on evicted pages
Collection with bookmarks is
necessarily incomplete
Not guaranteed to reclaim all memory
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
35. Bookmarking Incompleteness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
When a reference to an evicted object changes…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
36. Bookmarking Incompleteness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
When a reference to an evicted object changes…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
37. Bookmarking Incompleteness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
…it can make evicted objects unreachable.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
38. Bookmarking Incompleteness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
But bookmarks cannot be removed…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
39. Bookmarking Incompleteness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
…retaining unreachable heap objects.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
40. Bookmarking Completeness
Worst-case: completeness requires
duplicating evicted pages
See paper for more info
How can we preserve completeness?
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
41. Bookmarking Completeness
0 1 0
B
B
RAM
0
B B
B B
B
Hard Disk
If the heap becomes full…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
42. Bookmarking Completeness
0 0 0
RAM
0
Hard Disk
…BC removes all bookmarks…
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
43. Bookmarking Completeness
0 0 0
???
0
???
…and performs a VM-oblivious collection...
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
44. Bookmarking Completeness
0 0 0
???
0
???
…reclaiming all unreachable objects.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
45. Bookmarking Completeness
0 0 0
???
BC’s worst case is other
collectors’ common case
0
???
…reclaiming all unreachable objects.
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
46. BC Performance Optimizations
Uses generational design similar to
GenMS
Yields good performance when not
paging
Compacts heap to reduce pressure
Prevents single object from tying down a
page
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
47. Outline
Motivation
GC without paging
Cooperative garbage collection
Bookmarking
Results
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
48. Experimental Methodology
Extended Linux kernel 2.4.20
Eviction notification
vm_relinquish()
Added only 600 LOC
Jikes RVM 2.3.2 & MMTk
Compare BC to MarkSweep, SemiSpace,
CopyMS, GenCopy, GenMS
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
49. Throughput w/o Memory Pressure
Geo. Mean for Execution Time Relative to BC
1.15
BC
GenCopy
GenMS
Relative Execution Time
1.10
1.05
1.00
0.95
1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00
Relative Heap Size
BC runtime comparable to GenMS
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
50. Throughput while Paging
Execution Time for pseudoJBB w/ 77MB Heap
600
Ideal
BC
500 GenCopy
Execution Time (in s)
GenMS
400
300
200
100
0
212 163 153 143 133 123 113 103 93
Available Memory
BC throughput closely follows ideal curve
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
51. BMU Curve w/ Memory Pressure
71.9%
12231 ms
39.1%
467944 ms
0.0% 0.0%
1566 ms 81591 ms
Bookmarking crucial for good performance
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
52. Summary of Results
When not paging:
BC as fast as GenMS
When paging:
vs. GenMS (fastest when not paging)
41x faster, avg pause up to 218x smaller
vs. CopyMS (next fastest when paging)
5x faster, avg pause up to 45x smaller
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
53. Conclusion
Bookmarking collector available at:
http://www.cs.umass.edu/~hertz
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
54. Thank you
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
55. Other Pointer Summarizations
Pointer Compression
Save space by compressing pointers
Tracing pointers becomes expensive
Remembered Sets
Add evicted pointers to buffers
Requires space upon pages eviction
Per Object Referring Page Counts
Increases BC overheads
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
56. Related Work
VM-Sensitive Garbage Collection
Linearizing LISP lists [Bobrow/Murphy]
Does not know or use which heap pages are
memory resident
Independent heap regions [Bishop]
Cannot avoid page faults when region
contains evicted pages
Ephemeral garbage collection [Moon]
Must access evicted pages when they contain
pointers into generations being collected
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
57. Related Work
VM-Cooperative Garbage Collection
Discarding empty pages [Cooper, et al.]
No mechanism for evicting non-empty pages
Shrinking heap size [Alonso/Appel]
Responds to memory pressure changes only
after a collection
Automatic heap sizing [Yang, et al.]
Orthogonal approach that determines proper
heap size
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
58. Throughput w/ Memory Pressure
Execution Time for pseudoJBB w/ 77MB Heap
500000
BC
450000
BC w/ Fixed Nursery
BC w/ Fixed Nursery
400000
and Resizing Only
Execution Time (ms)
GenCopy w/ Fixed
350000
Nursery
GenMS w/ Fixed
300000
Nursery
250000
200000
150000
100000
50000
0
212 163 153 143 133 123 113 103 93
Available Memory
BC outperforms fixed nursery collectors
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
59. Multiprogramming Performance
Elapsed Time for 2 runs of pseudoJBB, 77MB Heap
500000
BC
GenCopy
Total Wall Clock Time (ms)
GenMS
400000 CopyMS
SemiSpace
300000
200000
100000
0
491 292 282 272 262 252 242 232 222 212 202 192 182 172 162
Available Memory (MB)
BC performs well in many environments
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
60. Experimental Methodology
Benchmarks:
SPECjvm98, ipsixql, jython, and
pseudoJBB
“Opt-and-reset” methodology
First iteration optimizes all code
Record results from second run
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science