Compacting the Uncompactable: The Mesh Compacting Memory Allocator

Subscribers:
344,000
Published on ● Video Link: https://www.youtube.com/watch?v=xb0mVfnvkp0



Duration: 44:15
2,684 views
96


Programs written in C/C++ can suffer from serious memory fragmentation, leading to low utilization of memory, degraded performance, and even application failure due to memory exhaustion. This problem extends to languages like Ruby and Python, where the standard interpreters for these languages are themselves C programs.

This talk introduces Mesh, a plug-in replacement for malloc that, for the first time, eliminates fragmentation in unmodified C/C++ applications through compaction. A key challenge is that, unlike in garbage-collected environments, the addresses of allocated objects in C and C++ are directly exposed to programmers, and applications may do things like stash addresses in integers or store flags in the low bits of aligned addresses. This hostile environment makes it impossible to safely relocate objects, as the runtime cannot precisely locate and update pointers.

Mesh combines novel randomized algorithms with widely-supported virtual memory operations to provably reduce fragmentation, breaking long-established worst-case bounds on memory efficiency with high probability. Mesh generally matches the runtime performance of state-of-the art memory allocators while reducing memory consumption and eliminating pathological cases; in particular, Mesh reduces the memory of consumption of Firefox by 16% and Redis by 39%. There are efforts underway to incorporate Mesh's approach to eliminate fragmentation into existing allocators, like jemalloc. Mesh is publicly available at http://libmesh.org.

Joint work with Bobby Powers, David Tench, and Andrew McGregor (UMass Amherst).

See more at https://www.microsoft.com/en-us/research/video/compacting-the-uncompactable-the-mesh-compacting-memory-allocator/




Other Videos By Microsoft Research


2019-09-24Verifying Web Page Layouts
2019-09-23Battling Unfair Demons in Peer Review
2019-09-19Engaging with Students and Parents in Bellevue School District in Multilingual Settings
2019-09-19Internship Program - MSR Montreal
2019-09-19Recent Advances in Unsupervised Image-to-Image Translation
2019-09-19Modeling User Experience in Games: Lessons Learned
2019-09-18HCI, IR and the search for better search with Dr. Susan Dumais [Podcast]
2019-09-17Efficient and Perceptually Plausible 3-D Sound For Virtual Reality
2019-09-17Dashboard Mechanisms for Online Marketplaces
2019-09-13Fly-through in the AirSim simulation Team Explorer created for the DARPA SubT Challenge
2019-09-12Compacting the Uncompactable: The Mesh Compacting Memory Allocator
2019-09-12Privacy-Preserving Statistical Learning and Testing
2019-09-12Program Synthesis meets Notebooks
2019-09-11Inside the Microsoft AI Residency Program with Dr. Brian Broll [Podcast]
2019-09-10Real-time Single-channel Speech Enhancement with Recurrent Neural Networks
2019-09-06AI Institute Geometry of Deep Learning 2019 [Workshop] Day 2 | Session 1]
2019-09-05AI Institute "Geometry of Deep Learning" 2019 [Workshop] Day 3 | Session 1
2019-09-05AI Institute "Geometry of Deep Learning" 2019 [Workshop] Day 3 | Session 2
2019-09-05EzPC (Easy Secure Multi-party Computation)
2019-09-04Time discretization invariance in Machine Learning, applications to reinforcement learning...
2019-09-04Antennas for light and their applications in classical optics, Dr Rupert Oulton, Imperial College



Tags:
microsoft research
C/C++
python
ruby
Mesh
malloc