Checking robustness to weak persistency models

Checking robustness to weak persistency models
复制标题

DOI:
10.1145/3519939.3523723
复制
发表时间:
2022-06
期刊:
Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation
影响因子:
--
通讯作者:
Hamed Gorjiara;Weiyu Luo;A. Lee;G. Xu;Brian Demsky
Hamed Gorjiara;Weiyu Luo;A. Lee;G. Xu;Brian Demsky
中科院分区:
其他
文献类型:
--
作者:
Hamed Gorjiara;Weiyu Luo;A. Lee;G. Xu;Brian Demsky

文献摘要

被引文献

相似文献

持续记忆(PM)技术提供的性能与DRAM接近持久性。持续的内存使程序能够通过正常的负载直接修改持久数据,并存储绕过重量级OS系统的指令,要求持久性。但是,这些商店不会立即持续制作,开发人员必须手动冲洗相应的缓存线,以迫使数据写入持续的内存。尽管最先进的测试工具可以帮助开发人员查找和修复持久性错误,但先前的研究表明,固定持续性错误平均需要几个星期的PM开发人员。开发人员必须手动检查执行以确定问题的根本原因。此外,大多数现有的最新测试工具都需要大量的用户注释来检测错误而没有明显症状,例如分割故障。在本文中,我们将鲁棒性作为足够的正确性条件提出,以确保程序执行没有丢失的冲洗错误。我们开发了一种用于检查鲁棒性的算法,并在PSAN工具中实现了该算法。 PSAN可以帮助开发人员识别无声数据损坏错误,并在有问题的内存操作中本地化错误的错误,这些错误缺失了冲洗操作。我们已经在一组并发索引,持久的内存库和两个流行的现实世界应用程序上评估了PSAN。我们在这些基准测试中发现了48个错误,其中17个没有报告过。
Persistent memory (PM) technologies offer performance close to DRAM with persistence. Persistent memory enables programs to directly modify persistent data through normal load and store instructions bypassing heavyweight OS system calls for persistency. However, these stores are not made immediately made persistent, the developer must manually flush the corresponding cache lines to force the data to be written to persistent memory. While state-of-the-art testing tools can help developers find and fix persistency bugs, prior studies have shown fixing persistency bugs on average takes a couple of weeks for PM developers. The developer has to manually inspect the execution to identify the root cause of the problem. In addition, most of the existing state-of-the-art testing tools require heavy user annotations to detect bugs without visible symptoms such as a segmentation fault. In this paper, we present robustness as a sufficient correctness condition to ensure that program executions are free from missing flush bugs. We develop an algorithm for checking robustness and have implemented this algorithm in the PSan tool. PSan can help developers both identify silent data corruption bugs and localize bugs in large traces to the problematic memory operations that are missing flush operations. We have evaluated PSan on a set of concurrent indexes, persistent memory libraries, and two popular real-world applications. We found 48 bugs in these benchmarks that 17 of them were not reported before.