1 / 21

Precise Dynamic Data-Race Detection At The Right Abstraction Level

Precise Dynamic Data-Race Detection At The Right Abstraction Level. Dan Grossman University of Washington Facebook Faculty Summit August 6, 2013. My plan. Background : Why data races really matter Semantics, compiler, hardware Every programmer must know this (most don’t)

manjit
Télécharger la présentation

Precise Dynamic Data-Race Detection At The Right Abstraction Level

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Precise Dynamic Data-Race Detection At The Right Abstraction Level Dan Grossman Universityof Washington Facebook Faculty Summit August 6, 2013

  2. My plan • Background: Why data races really matter • Semantics, compiler, hardware • Every programmer must know this (most don’t) • UW work on dynamic data-race detection • Hardware/software hybrid for speed • Virtualizing detection so correct for high-level languages • Other UW work on concurrency • Then we can eat  Dynamic Data-Race Detection, Dan Grossman

  3. An example • // shared memory • a = 0; b = 0; • // Thread 1 • x = a + b; • y = a; • z = a + b; • assert(z>=y); • // Thread 2 b = 1; a = 1; Can the assertion fail? Dynamic Data-Race Detection, Dan Grossman

  4. An example • // shared memory • a = 0; b = 0; • // Thread 1 • x = a + b; • y = a; • z = a + b; • assert(z>=y); • // Thread 2 b = 1; a = 1; • Argue assertion cannot fail: a never decreases and b is never negative, so z>=y • But argument makes implicit assumptions you cannot make in Java, C#, C++, etc. (!) Dynamic Data-Race Detection, Dan Grossman

  5. Common-subexpression elimination • // shared memory • a = 0; b = 0; • // Thread 1 • x = a + b; • y = a; • z = a + b; x; • assert(z>=y); • // Thread 2 b = 1; a = 1; Now assertion can fail • Mostcompiler optimizations can have effect of reordering/removing/adding memory operations • Hardware also reorders memory operations Dynamic Data-Race Detection, Dan Grossman

  6. A decision… • // shared memory • a = 0; b = 0; • // Thread 1 • x = a + b; • y = a; • z = a + b; x; • assert(z>=y); • // Thread 2 b = 1; a = 1; Language semantics must resolve this tension: • If assertion can fail, the program is wrong • If assertion cannot fail, the compiler is wrong Greatest practical failure of computer science? Dynamic Data-Race Detection, Dan Grossman

  7. Memory-consistency model • A memory-consistency model for a shared-memory language specifies which write a read can see • Essential part of language definition • Widely under-appreciated until a few years ago • Natural, strong model is sequential consistency (SC) [Lamport] • Intuitive “interleaving semantics” with a global memory • No reordering Dynamic Data-Race Detection, Dan Grossman

  8. Considered too strong The grand compromise… • Under SC, compiler is wrong in our example • Cannot use optimization/hardware that effectively reorders memory operations [on mutable, thread-shared memory] • So modern languages do notguarantee SC • But still need some language semantics to reason about programs… Dynamic Data-Race Detection, Dan Grossman

  9. The “grand compromise” T1 T2 rd(x) rd(x) wr(y) rel(m) acq(m) rd(z) wr(x) rd(x) • SC only for “data-race free” programs [Adve,Boehm] • Rely on programmer to synchronize correctly More precisely: • Data race [technical term]: read/write or write/write of the same location by distinct threads not ordered by synchronization • Semantics: If every SC execution of a program P has no data races, then every execution of P is equivalent to an SC execution • Known as “DRF implies SC” Dynamic Data-Race Detection, Dan Grossman

  10. Under the compromise • Programmer: write a DRF program • Language implementer: provide SC assuming program is DRF • Suffice not to add memory ops, turns reads into writes, or move memory ops across possible synchronization But what if there is a data race: • C++: “catch-fire semantics” • Java/C#: complicated story almost nobody understands • Preserve safety/security despite reorderings • Most others: disturbing mumbles One saner alternative: Data-race exceptions (DREs) Dynamic Data-Race Detection, Dan Grossman

  11. My plan • Background: Why data races really matter • Semantics, compiler, hardware • Every programmer must know this (most don’t) • UW work on dynamic data-race detection • Hardware/software hybrid for speed • Virtualizing detection so correct for high-level languages • Other UW work on concurrency • Then we can eat  Dynamic Data-Race Detection, Dan Grossman

  12. Performance Problem • Prior work: precise dynamic data-race detection • No false data races + no missed data races • See FastTrack [Flanagan/Freund 2009] • But 2-10x slowdown • Our work: • Step 1: Can hardware speed it up? RADISH1 • Step 2: Can hardware do the right thing? LARD2 1 with Joe Devietti, Ben Wood, Karin Strauss, Luis Ceze, ShazQadeer [ISCA12] 1 with Ben Wood, Luis Ceze [under submission] Dynamic Data-Race Detection, Dan Grossman

  13. The hardware story (hand-wave version) • Most memory accesses: • Hit in cache • A couple bits of metadata-state suffice to show cannot-race • Can delay updating per-location metadata until cache change • In less common cases, communicate with other processors • When multiprocessor cache protocols already do • In even less common cases, communicate with software system • Example: If data last accessed by a swapped out thread Dynamic Data-Race Detection, Dan Grossman

  14. What we did • High-level architectural design (RADISH) • Hardware/software hybrid essential to design • Use same data cache for data and metadata • Software can indicate no-metadata (e.g., for thread-local) • Compare speed and precision for: • Software simulation of our hardware design • Software-only variant (FastTrack algorithm for assembly) Dynamic Data-Race Detection, Dan Grossman

  15. Dynamic Data-Race Detection, Dan Grossman

  16. That was C… Java Bytecodes exception JVM + JIT HW + Race Detection trap • Maybe for a managed language we would do better • Baseline has more overhead per memory operation • In case you’re in lunch-mode: THIS DOESN’T WORK! Dynamic Data-Race Detection, Dan Grossman

  17. The problem • Java data-race detection must use the Java memory abstraction • Reads/writes to object fields • Lock acquires/releases • Java thread identity • This is not the memory abstraction running on hardware • Same memory reused for multiple Java objects (GC) • Same Java object in multiple locations (GC) • JVM does its own racy operations (concurrent GC, …) • JVM does its own synchronization • JVM can multiplex onto system threads Each of these can miss races or cause false races Dynamic Data-Race Detection, Dan Grossman

  18. Our work • Identify the problem: Data-race detection fundamentally for one memory abstraction • Get the performance of low-level detection with the semantics of high-level detection via HW + run-time system cooperation • Communicate via a few new assembly instructions (LARD) • Example: Copy metadata for address range • Empirical results: • 4 of 5 issues break precision in practice for at least 1 benchmark • Thanks to RADISH + LARD, actual Jikes modifications small • Results agree with FastTrack and retain almost all of RADISH’s performance Dynamic Data-Race Detection, Dan Grossman

  19. A common story Applications SE PL Compilers Architecture Microarchitecture Circuits Devices • First, fundamental problems: + great PhD students • But then hardware/software hybrids • Software: what/how to check • Hardware: fast common cases (Need more research that marches across the system stack) Dynamic Data-Race Detection, Dan Grossman

  20. Much, much more Some other UW work on concurrency: • Deterministic execution: Joe Devietti [Penn], Tom Bergan, … • Symbolic execution and constrained schedulers: Tom Bergan • Bug Detection/Avoidance: Brandon Lucia [MSR], … • Language design for no races: Colin Gordon • And foundational work on aliasing + verification And much more too: • Approximate computing: Adrian Sampson [FB fellow] + others • Program analysis for math-problem synthesis • System design with emerging memory technologies • Large low-locality graph problems [hi FB! ] • … Dynamic Data-Race Detection, Dan Grossman

  21. Thanks! Questions? Lunch? Dynamic Data-Race Detection, Dan Grossman

More Related