Award Abstract # 1703425
CSR: SHF: Medium: Collaborative Research: New Horizons in Deterministic Execution

NSF Org: CNS
Division Of Computer and Network Systems
Recipient: UNIVERSITY OF ILLINOIS
Initial Amendment Date: May 26, 2017
Latest Amendment Date: October 15, 2020
Award Number: 1703425
Award Instrument: Continuing Grant
Program Manager: Matt Mutka
CNS
 Division Of Computer and Network Systems
CSE
 Directorate for Computer and Information Science and Engineering
Start Date: July 1, 2017
End Date: June 30, 2021 (Estimated)
Total Intended Award Amount: $473,363.00
Total Awarded Amount to Date: $473,363.00
Funds Obligated to Date: FY 2017 = $217,577.00
FY 2019 = $125,941.00

FY 2020 = $129,845.00
History of Investigator:
  • Jakob Eriksson (Principal Investigator)
    jakob@uic.edu
Recipient Sponsored Research Office: University of Illinois at Chicago
809 S MARSHFIELD AVE M/C 551
CHICAGO
IL  US  60612-4305
(312)996-2862
Sponsor Congressional District: 07
Primary Place of Performance: University of Illinois at Chicago
851 S Morgan St
Chicago
IL  US  60607-7042
Primary Place of Performance
Congressional District:
07
Unique Entity Identifier (UEI): W8XEAJDKMXH3
Parent UEI:
NSF Program(s): CSR-Computer Systems Research
Primary Program Source: 01001718DB NSF RESEARCH & RELATED ACTIVIT
01001920DB NSF RESEARCH & RELATED ACTIVIT

01002021DB NSF RESEARCH & RELATED ACTIVIT
Program Reference Code(s): 7924
Program Element Code(s): 735400
Award Agency Code: 4900
Fund Agency Code: 4900
Assistance Listing Number(s): 47.070

ABSTRACT

If you have ever thought to yourself "huh, my computer didn't do that last time", you may have experienced what computer scientists call non-determinism. Today, most computer hardware executes programs in a non-deterministic fashion: a program may yield different output or behavior in different runs, given the exact same input, sometimes with disastrous consequences. Recent research enforces deterministic execution in inherently non-deterministic systems. Unfortunately, this often comes at a steep performance price. Also, until now determinism is only available for non-interactive programs. The goal of this project is to improve the efficiency of deterministic execution of concurrent programs, and to include a large class of interactive programs in the scope of deterministic execution. Longer term, the goal is to make deterministic computing a viable choice, where nondeterminism is the only option today. This would likely improve both the safety and quality of the vast number of multithreaded programs running on today's and tomorrow's multicore devices.

To bring the benefits of deterministic execution to real-world programs, this project investigates algorithms, runtime systems, operating systems and hardware support to improve the performance and applicability of determinism. The project is organized along three major thrusts: combating the clock skew in deterministic logical clocks that imposes unnecessary waiting on threads, using speculation to break the serial bottleneck that current systems impose on synchronization operations, and extending the scope of determinism to encompass interactive applications. The researchers plan to openly distribute the systems built for this project to facilitate examination by other researchers and integration with computer systems education.

PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH

Note:  When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external site maintained by the publisher. Some full text articles may not yet be available without a charge during the embargo (administrative interval).

Some links on this page may take you to non-federal websites. Their policies may differ from this site.

Basu, Nilanjana and Montanari, Claudio and Eriksson, Jakob "Frequent background polling on a shared thread, using light-weight compiler interrupts" PLDI 2021 , 2021 https://doi.org/10.1145/3453483.3454107 Citation Details
Merrifield, Timothy and Roghanchi, Sepideh and Devietti, Joseph and Eriksson, Jakob "Lazy Determinism for Faster Deterministic Multithreading" Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems , 2019 10.1145/3297858.3304047 Citation Details

PROJECT OUTCOMES REPORT

Disclaimer

This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.

This project investigated novel techniques for, and applications of, deterministic execution of multi-threaded programs. Here, determinism means that for the same input, a program is guaranteed to produce the same output, every time. Surprisingly, this guarantee is not provided for multi-threaded programs in most of today's computing environments. Multi-threading, meanwhile, adds significant complexity to a program's behavior, but is necessary in order to take full advantage of modern, multi-core computer hardware. 

Past work on deterministic multi-threading provided suitable guarantees, but at the cost of significantly slowing down the program, often to such an extent that any performance advantage provided by a multi-core computer were negated, or worse. Thus, both the overhead and the poor scalability of deterministic multi-threading were prohibitive for most use cases.

Key to deterministic multi-threading is the concept of a logical clock. This is essentially a counter that is regularly incremented at fixed points in the program, indicating the passage of time without being subject to actual timing variations that may result in nondeterminism. Having a logical clock enables the deterministic ordering of key operations between threads, which is necessary to preserve determinism. As part of this project, we developed a new logical clock with fine granularity and high efficiency, both crucial for fast deterministic multi-threading. Past work has demonstrated fine granularity, or high efficiency, but not the combination of the two. 

The project also explored extending the definition of deterministic execution, to find other compelling applications of the technology developed. Among these, a particulary promising application is high-frequency background polling. Today, if an application needs to frequently check for some condition, such as externally triggered changes to values in memory, the only practical solution is to dedicate a full core to the task of "busy polling" for this condition: checking over and over. This is often done where very high networking or input-output performance is needed, but can be very wasteful, as it occupies an entire core whether or not any work is actually being performed. 

Using our deterministic logical clock, we can efficiently (and deterministically) interleave even very frequent polling (millions of times per second) with other useful application work, eliminating the need for a dedicated core, thus significantly improving efficiency and performance. This, in turn, reduces both the amount of energy needed for a given task, and the time needed to perform it, in turn reducing equipment needs. While we did not foresee this particular application at the outset of the project, we anticipate that this contribution will become at least as important as deterministic multi-threading itself.

 


Last Modified: 07/01/2021
Modified by: Jakob Eriksson

Please report errors in award information by writing to: awardsearch@nsf.gov.

Print this page

Back to Top of page