一句话:提出 CXLMC,对 x86-CXL 共享内存程序的崩溃执行进行模型检测,在 8 个应用中发现 24 个缺陷。
CXL 共享内存是新兴工业标准,可让多台机器缓存一致地共享远程内存,但机器故障会导致未刷回的脏缓存行丢失,因此需要结合崩溃一致性设计和 flush/fence 指令来保持数据结构一致。此类崩溃一致性数据结构开发易错,且测试难以发现错误。本文提出 CXLMC,一个面向 x86-CXL 共享内存平台的模型检测器,系统探索包含机器崩溃的执行,以发现崩溃一致性错误。作者在 8 个应用上评估 CXLMC,共发现 24 个 bug,其中 7 个为新 bug,表明该方法能有效检测 CXL 共享内存程序的崩溃一致性缺陷。
Compute Express Link (CXL) shared memory is an emerging industry standard that will allow for cache coherent sharing of remote memory between many machines. Memory devices will contain large amounts of DRAM that can be shared by many machines in a CXL cluster. This will enable software running on clusters of computers to use shared memory to communicate more efficiently and to share important data between these machines. As CXL clusters grow larger, machine failures will become a significant risk. Software will need to tolerate machine failures. A key challenge is that CXL uses caching of remote memory to hide latency. If a machine fails before it has flushed dirty cache lines back to the CXL shared memory device, the latest stores to those cache lines will be lost. Data structures have been developed that combine crash-consistent designs with flush and fence instructions to ensure that the data structures remain consistent even in the presence of failures. However, developing such crash-consistent data structures is error prone. It is easy to make a design or implementation error. Such crash consistency errors are hard to detect with testing. We propose CXLMC, a model checker that systematically explores crashing executions for the x86-CXL shared memory platform. We have evaluated CXLMC and found 24 bugs in 8 applications including 7 new bugs.