Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-Review

Autoren

  • Florian Rommel
  • Christian Dietrich
  • Michael Rodin
  • Daniel Lohmann
Forschungs-netzwerk anzeigen

Details

OriginalspracheEnglisch
Titel des SammelwerksProceedings of the 14th EuroSys Conference 2019
ErscheinungsortNew York
Seitenumfang13
ISBN (elektronisch)9781450362818
PublikationsstatusVeröffentlicht - 25 März 2019
Veranstaltung14th European Conference on Computer Systems, EuroSys 2019 - Dresden, Deutschland
Dauer: 25 März 201928 März 2019

Abstract

System software, such as the Linux kernel, typically provides a high degree of versatility by means of static and dynamic variability. While static variability can be completely resolved at compile time, dynamic variation points come at a cost arising from extra tests and branches in the control flow. Kernel developers use it (a) only sparingly and (b) try to mitigate its overhead by run-time binary code patching, for which several problem/architecture-specific mechanisms have become part of the kernel. We think that means for highly efficient dynamic variability should be provided by the language and compiler instead and present multiverse, an extension to the C programming language and the GNU C compiler for this purpose. Multiverse is easy to apply and targets program-global configuration switches in the form of (de-)activatable features, integer-valued configurations, and rarely-changing program modes. At run time, multiverse removes the overhead of evaluating them on every invocation. Microbenchmark results from applying multiverse to performance-critical features of the Linux kernel, cPython, the musl C-library and GNU grep show that multiverse can not only replace and unify the existing mechanisms for run-time code patching, but may in some cases even improve their performance by adding new dynamic variability options.

ASJC Scopus Sachgebiete

Zitieren

Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software. / Rommel, Florian; Dietrich, Christian; Rodin, Michael et al.
Proceedings of the 14th EuroSys Conference 2019. New York, 2019. 37.

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-Review

Rommel, F, Dietrich, C, Rodin, M & Lohmann, D 2019, Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software. in Proceedings of the 14th EuroSys Conference 2019., 37, New York, 14th European Conference on Computer Systems, EuroSys 2019, Dresden, Deutschland, 25 März 2019. https://doi.org/10.1145/3302424.3303959
Rommel, F., Dietrich, C., Rodin, M., & Lohmann, D. (2019). Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software. In Proceedings of the 14th EuroSys Conference 2019 Artikel 37. https://doi.org/10.1145/3302424.3303959
Rommel F, Dietrich C, Rodin M, Lohmann D. Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software. in Proceedings of the 14th EuroSys Conference 2019. New York. 2019. 37 doi: 10.1145/3302424.3303959
Rommel, Florian ; Dietrich, Christian ; Rodin, Michael et al. / Multiverse : Compiler-Assisted Management of Dynamic Variability in Low-Level System Software. Proceedings of the 14th EuroSys Conference 2019. New York, 2019.
Download
@inproceedings{eade1c4a029447c48a40efcb7c245932,
title = "Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software",
abstract = "System software, such as the Linux kernel, typically provides a high degree of versatility by means of static and dynamic variability. While static variability can be completely resolved at compile time, dynamic variation points come at a cost arising from extra tests and branches in the control flow. Kernel developers use it (a) only sparingly and (b) try to mitigate its overhead by run-time binary code patching, for which several problem/architecture-specific mechanisms have become part of the kernel. We think that means for highly efficient dynamic variability should be provided by the language and compiler instead and present multiverse, an extension to the C programming language and the GNU C compiler for this purpose. Multiverse is easy to apply and targets program-global configuration switches in the form of (de-)activatable features, integer-valued configurations, and rarely-changing program modes. At run time, multiverse removes the overhead of evaluating them on every invocation. Microbenchmark results from applying multiverse to performance-critical features of the Linux kernel, cPython, the musl C-library and GNU grep show that multiverse can not only replace and unify the existing mechanisms for run-time code patching, but may in some cases even improve their performance by adding new dynamic variability options.",
keywords = "Binary patching, Compilers, Dynamic variability, Linux, Operating systems",
author = "Florian Rommel and Christian Dietrich and Michael Rodin and Daniel Lohmann",
note = "Funding Information: We thank Valentin Rothberg for his early work on multiverse, as well as our anonymous reviewers and Tim Harris for their detailed and helpful feedback. This work has been supported by the German Research Foundation (DFG) under the grants no. LO 1719/3-1 and LO 1719/4-1.; 14th European Conference on Computer Systems, EuroSys 2019 ; Conference date: 25-03-2019 Through 28-03-2019",
year = "2019",
month = mar,
day = "25",
doi = "10.1145/3302424.3303959",
language = "English",
booktitle = "Proceedings of the 14th EuroSys Conference 2019",

}

Download

TY - GEN

T1 - Multiverse

T2 - 14th European Conference on Computer Systems, EuroSys 2019

AU - Rommel, Florian

AU - Dietrich, Christian

AU - Rodin, Michael

AU - Lohmann, Daniel

N1 - Funding Information: We thank Valentin Rothberg for his early work on multiverse, as well as our anonymous reviewers and Tim Harris for their detailed and helpful feedback. This work has been supported by the German Research Foundation (DFG) under the grants no. LO 1719/3-1 and LO 1719/4-1.

PY - 2019/3/25

Y1 - 2019/3/25

N2 - System software, such as the Linux kernel, typically provides a high degree of versatility by means of static and dynamic variability. While static variability can be completely resolved at compile time, dynamic variation points come at a cost arising from extra tests and branches in the control flow. Kernel developers use it (a) only sparingly and (b) try to mitigate its overhead by run-time binary code patching, for which several problem/architecture-specific mechanisms have become part of the kernel. We think that means for highly efficient dynamic variability should be provided by the language and compiler instead and present multiverse, an extension to the C programming language and the GNU C compiler for this purpose. Multiverse is easy to apply and targets program-global configuration switches in the form of (de-)activatable features, integer-valued configurations, and rarely-changing program modes. At run time, multiverse removes the overhead of evaluating them on every invocation. Microbenchmark results from applying multiverse to performance-critical features of the Linux kernel, cPython, the musl C-library and GNU grep show that multiverse can not only replace and unify the existing mechanisms for run-time code patching, but may in some cases even improve their performance by adding new dynamic variability options.

AB - System software, such as the Linux kernel, typically provides a high degree of versatility by means of static and dynamic variability. While static variability can be completely resolved at compile time, dynamic variation points come at a cost arising from extra tests and branches in the control flow. Kernel developers use it (a) only sparingly and (b) try to mitigate its overhead by run-time binary code patching, for which several problem/architecture-specific mechanisms have become part of the kernel. We think that means for highly efficient dynamic variability should be provided by the language and compiler instead and present multiverse, an extension to the C programming language and the GNU C compiler for this purpose. Multiverse is easy to apply and targets program-global configuration switches in the form of (de-)activatable features, integer-valued configurations, and rarely-changing program modes. At run time, multiverse removes the overhead of evaluating them on every invocation. Microbenchmark results from applying multiverse to performance-critical features of the Linux kernel, cPython, the musl C-library and GNU grep show that multiverse can not only replace and unify the existing mechanisms for run-time code patching, but may in some cases even improve their performance by adding new dynamic variability options.

KW - Binary patching

KW - Compilers

KW - Dynamic variability

KW - Linux

KW - Operating systems

UR - http://www.scopus.com/inward/record.url?scp=85063883910&partnerID=8YFLogxK

U2 - 10.1145/3302424.3303959

DO - 10.1145/3302424.3303959

M3 - Conference contribution

AN - SCOPUS:85063883910

BT - Proceedings of the 14th EuroSys Conference 2019

CY - New York

Y2 - 25 March 2019 through 28 March 2019

ER -