Kard: lightweight data race detection with per-thread memory protection

Kard: lightweight data race detection with per-thread memory protection
复制标题

Kard:具有每线程内存保护的轻量级数据竞争检测

DOI:
--
复制
发表时间:
2021
期刊:
International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子:
--
通讯作者:
Byoungyoung Lee
Byoungyoung Lee
中科院分区:
--
文献类型:
--
作者:
Adil Ahmad;Sangho Lee;Pedro Fonseca;Byoungyoung Lee

文献摘要

参考文献

被引文献

相似文献

在多线程中查找数据错误已被证明是一个挑战。由于昂贵的编译器仪器的访问;因此,它们的效率不足以用于所有开发和测试设置。动态检测由不一致的锁定使用引起的数据竞赛 - 当程序同时使用不同的锁访问相同的内存对象,或者仅使用常见锁定的某些并发访问权限。相反,Kard使用MPK的MPK键(MPK)。 Kard确保仅在其关键部分中的一个线程可以访问一个共享对象,并通过引入钥匙增强的竞赛检测来捕获其他并发线程从其他并发线程中访问。保护密钥,并自动修剪非责任或多余的违规行为。锁定使用不一致,几何平均执行时间开销较低:PARSEC和SPLASH-2X基准为7.0%,一组现实世界应用(NGINX,MEMCACHED,PIGZ和AGET)的基准为5.3%。
Finding data race bugs in multi-threaded programs has proven challenging. A promising direction is to use dynamic detectors that monitor the program’s execution for data races. However, despite extensive work on dynamic data race detection, most proposed systems for commodity hardware incur prohibitive overheads due to expensive compiler instrumentation of memory accesses; hence, they are not efficient enough to be used in all development and testing settings. KARD is a lightweight system that dynamically detects data races caused by inconsistent lock usage—when a program concurrently accesses the same memory object using different locks or only some of the concurrent accesses are synchronized using a common lock. Unlike existing detectors, KARD does not monitor memory accesses using expensive compiler instrumentation. Instead, KARD leverages commodity per-thread memory protection, Intel Memory Protection Keys (MPK). Using MPK, KARD ensures that a shared object is only accessible to a single thread in its critical section, and captures all violating accesses from other concurrent threads. KARD overcomes various limitations of MPK by introducing key-enforced race detection, employing consolidated unique page allocation, carefully managing protection keys, and automatically pruning out non-racy or redundant violations. Our evaluation shows that KARD detects all data races caused by inconsistent lock usage and has a low geometric mean execution time overhead: 7.0% on PARSEC and SPLASH-2x benchmarks and 5.3% on a set of real-world applications (NGINX, memcached, pigz, and Aget).
利用主内存数据库中的硬件事务内存
DOI: 10.1109/icde.2014.6816683
发表时间: 2014
期刊: 2014 IEEE 30th International Conference on Data Engineering
影响因子: --
作者:
V. Leis;A. Kemper;T. Neumann
通讯作者: T. Neumann
DOI: 10.1145/3276514
发表时间: 2018-10
影响因子: --
作者:
Sam Blackshear;Nikos Gorogiannis;P. O'Hearn;Ilya Sergey
通讯作者: Sam Blackshear;Nikos Gorogiannis;P. O'Hearn;Ilya Sergey