一句话:提出持久性竞态这一崩溃一致性缺陷,并实现首个检测器 Yashme,在持久内存基准中发现 26 个真实竞态。
持久内存(PM/NVRAM)硬件有望改变程序存储信息的方式,但确保 PM 程序崩溃一致性十分困难。本文提出一类新的崩溃一致性缺陷——持久性竞态(persistency races),它由标准编译器优化与持久内存语义的交互引起,可导致非原子存储部分持久化。作者实现首个检测器 Yashme。检测难点是执行必须在带竞态的存储与其缓存刷新之间的极窄窗口内崩溃,朴素技术难以生效。Yashme 采用新技术,在崩溃前执行的 prefix 中检测竞态,即使注入的崩溃未落入该窗口也能有效发现竞态。作者在持久内存基准上评估,发现 26 个此前未报告的真实持久性竞态。
Persistent memory (PM) or Non-Volatile Random-Access Memory (NVRAM) hardware such as Intel’s Optane memory product promises to transform how programs store and manipulate information. Ensuring that persistent memory programs are crash consistent is a major challenge. We present a novel class of crash consistency bugs for persistent memory programs, which we call persistency races. Persistency races can cause non-atomic stores to be made partially persistent. Persistency races arise due to the interaction of standard compiler optimizations with persistent memory semantics. We present Yashme, the first detector for persistency races. A major challenge is that in order to detect persistency races, the execution must crash in a very narrow window between a store with a persistency race and its corresponding cache flush operation, making it challenging for naïve techniques to be effective. Yashme overcomes this challenge with a novel technique for detecting races in executions that are prefixes of the pre-crash execution. This technique enables Yashme to effectively find persistency races even if the injected crashes do not fall into that window. We have evaluated Yashme on a range of persistent memory benchmarks and have found 26 real persistency races that have never been reported before.