Multicore scheduling for lightweight communicating processes

Carl G. Ritson, Adam T. Sampson, Frederick R. M. Barnes

Research output: Contribution to journalArticle

3 Citations (Scopus)

Abstract

Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A typical process-oriented design involves the composition of a large number of small isolated component processes. These concurrent components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. The runtime’s scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs.
Original languageEnglish
Pages (from-to)727-740
Number of pages14
JournalScience of Computer Programming
Volume77
Issue number6
DOIs
Publication statusPublished - Jun 2012

Fingerprint

Scheduling
Memory architecture
Communication
Computer programming
Application programs
Data storage equipment
Chemical analysis

Cite this

Ritson, Carl G. ; Sampson, Adam T. ; Barnes, Frederick R. M. / Multicore scheduling for lightweight communicating processes. In: Science of Computer Programming. 2012 ; Vol. 77, No. 6. pp. 727-740.
@article{be4f662d56b441158e9b683d467e8f17,
title = "Multicore scheduling for lightweight communicating processes",
abstract = "Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A typical process-oriented design involves the composition of a large number of small isolated component processes. These concurrent components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. The runtime’s scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs.",
author = "Ritson, {Carl G.} and Sampson, {Adam T.} and Barnes, {Frederick R. M.}",
year = "2012",
month = "6",
doi = "10.1016/j.scico.2011.04.006",
language = "English",
volume = "77",
pages = "727--740",
journal = "Science of Computer Programming",
issn = "0167-6423",
publisher = "Elsevier",
number = "6",

}

Multicore scheduling for lightweight communicating processes. / Ritson, Carl G.; Sampson, Adam T.; Barnes, Frederick R. M.

In: Science of Computer Programming, Vol. 77, No. 6, 06.2012, p. 727-740.

Research output: Contribution to journalArticle

TY - JOUR

T1 - Multicore scheduling for lightweight communicating processes

AU - Ritson, Carl G.

AU - Sampson, Adam T.

AU - Barnes, Frederick R. M.

PY - 2012/6

Y1 - 2012/6

N2 - Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A typical process-oriented design involves the composition of a large number of small isolated component processes. These concurrent components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. The runtime’s scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs.

AB - Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A typical process-oriented design involves the composition of a large number of small isolated component processes. These concurrent components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. The runtime’s scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs.

U2 - 10.1016/j.scico.2011.04.006

DO - 10.1016/j.scico.2011.04.006

M3 - Article

VL - 77

SP - 727

EP - 740

JO - Science of Computer Programming

JF - Science of Computer Programming

SN - 0167-6423

IS - 6

ER -