Logo: to the web site of Uppsala University

uu.sePublications from Uppsala University
Change search
Link to record
Permanent link

Direct link
Wilhelmsson, Jesper
Publications (8 of 8) Show all publications
Sagonas, K. & Wilhelmsson, J. (2006). Efficient Memory Management for Concurrent Programs that Use Message Passing. Science of Computer Programming, 62(2), 98-121
Open this publication in new window or tab >>Efficient Memory Management for Concurrent Programs that Use Message Passing
2006 (English)In: Science of Computer Programming, ISSN 0167-6423, E-ISSN 1872-7964, Vol. 62, no 2, p. 98-121Article in journal (Refereed) Published
Abstract [en]

We present an efficient memory management scheme for concurrent programming languages where communication occurs using message passing with copying semantics. The runtime system is built around process-local heaps, which frees the memory manager from redundant synchronization in a multi-threaded implementation and allows the memory reclamation of process-local heaps to be a private business and to often take place without ever triggering garbage collection. The allocator is guided by a static analysis which speculatively allocates data possibly used as messages in a shared memory area.

To respect the (soft) real-time requirements of the language, we develop and present in detail a generational, incremental garbage collection scheme tailored to the characteristics of this runtime system. The incremental collector imposes no overhead on the mutator, requires no costly barrier mechanisms, has a relatively small space overhead and can be scheduled either based on a time or on a work quantum.

We have implemented these schemes in the context of an industrial-strength implementation of a concurrent functional language used to develop large-scale, highly concurrent, telecommunication applications. Our measurements across a range of applications indicate that the incremental collector imposes only very small overhead on the total runtime, can achieve very short pause times (1 millisecond or less) while being able to sustain a high degree of mutator utilization.

Keywords
incremental and real-time garbage collection, thread-local heaps, message analysis, concurrent languages, mutator utilization, erlang
National Category
Computer and Information Sciences
Identifiers
urn:nbn:se:uu:diva-19790 (URN)10.1016/j.scico.2006.02.006 (DOI)000239913600002 ()
Available from: 2006-12-01 Created: 2006-12-01 Last updated: 2018-01-12Bibliographically approved
Sagonas, K. & Wilhelmsson, J. (2006). Mark and Split. In: ISSM'06: ACM SIGPLAN International Symposium on Memory Management.
Open this publication in new window or tab >>Mark and Split
2006 (English)In: ISSM'06: ACM SIGPLAN International Symposium on Memory Management, 2006Conference paper, Published paper (Refereed)
National Category
Computer Sciences
Identifiers
urn:nbn:se:uu:diva-79377 (URN)
Available from: 2007-02-09 Created: 2007-02-09 Last updated: 2018-01-13
Carlsson, R., Sagonas, K. & Wilhelmsson, J. (2006). Message analysis for concurrent programs using message passing. ACM Transactions on Programming Languages and Systems, 28(4), 715-746
Open this publication in new window or tab >>Message analysis for concurrent programs using message passing
2006 (English)In: ACM Transactions on Programming Languages and Systems, ISSN 0164-0925, E-ISSN 1558-4593, Vol. 28, no 4, p. 715-746Article in journal (Refereed) Published
Abstract [en]

We describe an analysis-driven storage allocation scheme for concurrent systems that use message passing with copying semantics. The basic principle is that in such a system, data which is not part of any message does not need to be allocated in a shared data area. This allows for the deallocation of thread-specific data without requiring global synchronization and often without even triggering garbage collection. On the other hand, data that is part of a message should preferably be allocated on a shared area since this allows for fast (O(1)) interprocess communication that does not require actual copying. In the context of a dynamically typed, higher-order concurrent functional language, we present a static message analysis which guides the allocation. As shown by our performance evaluation, conducted using a production-quality language implementation, the analysis is effective enough to discover most data which is to be used as a message, and to allow the allocation scheme to combine the best performance characteristics of both a process-centric and a communal memory architecture.

Keywords
static analysis, runtime systems, concurrent languages, message passing, Erlang
National Category
Information Systems
Identifiers
urn:nbn:se:uu:diva-19794 (URN)10.1145/1146809.1146813 (DOI)000239815200004 ()
Available from: 2007-04-17 Created: 2007-04-17 Last updated: 2018-01-12Bibliographically approved
Wilhelmsson, J. (2005). Efficient memory management for message-passing concurrency, Part I: Single-threaded execution. (Licentiate dissertation). Uppsala University
Open this publication in new window or tab >>Efficient memory management for message-passing concurrency, Part I: Single-threaded execution
2005 (English)Licentiate thesis, comprehensive summary (Other academic)
Abstract [en]

Manual memory management is error prone. Some of the errors it causes, in particular memory leaks and dangling pointers, are hard to find. Manual memory management becomes even harder when concurrency enters the picture. It therefore gets more and more important to overcome the problems of manual memory management in concurrent software as the interest in these applications increases with the development of new, multi-threaded, hardware.

To ease the implementation of concurrent software many programming languages these days come with automatic memory management and support for concurrency. This support, called the concurrency model of the language, comes in many flavors (shared data structures, message passing, etc). The performance and scalability of applications implemented using such programming languages depends on the concurrency model, the memory architecture, and the memory manager used by the language. It is therefore important to investigate how different memory architectures and memory management schemes affect the implementation of concurrent software and what performance tradeoffs are involved.

This thesis investigates ways of efficiently implementing the memory architecture and memory manager in a concurrent programming language. The concurrency model which we explore is based on message passing with copying semantics. We start by presenting the implementation of three different memory architectures for concurrent software and give a detailed characterization of their pros and cons regarding message passing and efficiency in terms of memory management. The issue examined is whether to use private memory for all processes in a program or if there may be benefits in sharing all or parts of the memory. In one of the architectures looked at, called hybrid, a static analysis called message analysis is used to guide the allocation of message data.

Because the hybrid architecture is the enabling technology for a scalable multi-threaded implementation, we then focus on the hybrid architecture and investigate how to manage the memory using different garbage collection techniques. We present pros and cons of these techniques and discuss their characteristics and their performance in concurrent applications. Finally our experiences from turning the garbage collector incremental are presented. The effectiveness of the incremental collector is compared to the non-incremental version. On a wide range of benchmarks, the incremental collector we present is able to sustain high mutator utilization (about 80% during collection cycles) at a low cost.

This work is implemented in an industrial-strength implementation of the concurrent functional programming language Erlang. Our eventual goal is to use the hybrid architecture and the incremental garbage collector as the basis for an efficient multi-threaded implementation of Erlang. The work described in this thesis is a big step in that direction.

Place, publisher, year, edition, pages
Uppsala University, 2005
Series
Information technology licentiate theses: Licentiate theses from the Department of Information Technology, ISSN 1404-5117 ; 2005-001
National Category
Computer Sciences
Research subject
Computer Science
Identifiers
urn:nbn:se:uu:diva-86468 (URN)
Supervisors
Available from: 2005-05-27 Created: 2006-12-01 Last updated: 2018-01-13Bibliographically approved
Sagonas, K. & Wilhelmsson, J. (2004). Message Analysis-Guided Allocation and Low-Pause Incremental Garbage Collection in a Concurrent Language. In: In Proceedings of ISMM'04: ACM SIGPLAN International Symposium on Memory Management (pp. 1-12).
Open this publication in new window or tab >>Message Analysis-Guided Allocation and Low-Pause Incremental Garbage Collection in a Concurrent Language
2004 (English)In: In Proceedings of ISMM'04: ACM SIGPLAN International Symposium on Memory Management, 2004, p. 1-12Conference paper, Published paper (Refereed)
National Category
Computer Sciences
Identifiers
urn:nbn:se:uu:diva-70341 (URN)
Available from: 2005-05-11 Created: 2005-05-11 Last updated: 2018-01-10
Carlsson, R., Sagonas, K. & Wilhelmsson, J. (2003). Message Analysis for Concurrent Languages. In: In Proceedings of the Static Analysis Symposium (pp. 73-90).
Open this publication in new window or tab >>Message Analysis for Concurrent Languages
2003 (English)In: In Proceedings of the Static Analysis Symposium, 2003, p. 73-90Conference paper, Published paper (Refereed)
Identifiers
urn:nbn:se:uu:diva-45103 (URN)
Available from: 2006-12-04 Created: 2006-12-04
Wilhelmsson, J. (2002). Exploring Alternative Memory Architectures for Erlang: Implementation and Performance Evaluation. : Uppsala Unviversity
Open this publication in new window or tab >>Exploring Alternative Memory Architectures for Erlang: Implementation and Performance Evaluation
2002 (English)Other (Other scientific)
Place, publisher, year, pages
Uppsala Unviversity, 2002
Identifiers
urn:nbn:se:uu:diva-45608 (URN)
Available from: 2006-12-27 Created: 2006-12-27
Johansson, E., Sagonas, K. & Wilhelmsson, J. (2002). Heap Architectures for Concurrent Languages using Message Passing. In: Proceedings of ISMM'2002: ACM SIGPLAN International Symposium on Memory Management (pp. 88-99).
Open this publication in new window or tab >>Heap Architectures for Concurrent Languages using Message Passing
2002 (English)In: Proceedings of ISMM'2002: ACM SIGPLAN International Symposium on Memory Management, 2002, p. 88-99Conference paper, Published paper (Refereed)
National Category
Computer Sciences
Identifiers
urn:nbn:se:uu:diva-44610 (URN)
Available from: 2006-12-27 Created: 2006-12-27 Last updated: 2018-01-11
Organisations

Search in DiVA

Show all publications