Background
NVMM的出现相比于传统磁盘来说,具有更高的吞吐量和更低的延迟,极大地提高了存储性能,目前针对NVMM设计的文件系统利用持久内存的直接访问(DAX)功能绕过页面缓存层,并为用户应用程序提供对文件数据的直接访问。但NVMM成本比较高,因此需要SSD和HDD去提供更大的容量。基于此,本文提出了一种分层文件系统,管理异构的存储设备,并根据数据性能要求和应用程序未来的访问模式将数据放置到最合适的层。
Question
根据上述阐述,涉及到的问题包括:
- 数据的放置策略: 由于NVMM的容量有限且DRAM扔具有比NVMM更好的性能,异步写的数据是不影响程序性能的,所以提出了以下数据放置策略:(将小的;同步更新的数据写入到NVMM,将大的异步更新的数据写入到DRAM中,后台写回disk)
因此,需要识别那些将写入的数据类型是怎样的,文中提出了两个预测器:
-
write size predictor
- 功能: 预测写入的数据是否是大的,且判断是否是稳定的(在同一地址范围内的未来写入可能也很大)
- 实现: 在每个write entry中都保留一个计数器,以指示写入大小是否既大又稳定。当Ziggurat重写旧的写条目时,它首先检查写入大小足够大,至少可以覆盖原始日志条目占用的面积的一半。如果是,Ziggurat将旧写条目的计数器值传递给新条目,并将其增加1。否则,它会将计数器重置为零。如果数字大于4(可调参数),Ziggurat将写入分类为“大”。既大又异步的写入磁盘
-
synchronicity predictor
-
功能: 预测应用程序未来是否可能调用fsync
-
实现: 计算在两个对fsync的调用之间写入文件的数据块的数量。如果数字小于一个阈值(例如,在我们的实验中为1024),则将
-