SOSP2011: Differentiated Storage Services
主要工作
计算机系统和存储系统存在语义上的鸿沟,这样有利于两个系统独立进行演化,但不利于复杂计算环境下的性能优化。于是,作者提出了一种差异化存储服务(Differentiated Storage Services)的分类框架,利用I/O分类将语义带入存储系统,然后由存储系统进行处理,达到优化的目的。
通过改动已有的块级接口,让每个I/O请求都携带一个类型标识(classifier),并将此标识复制到I/O命令中去,再通过存储设备的管理接口读取标识,并处理各种分类策略。这样,计算机系统即传递了语义,又不需要知道存储系统的内部实现,并不影响上面提到演化的自由性。
更进一步,如果存储系统供应商能够根据这种分类策略在存储系统内部能够有针对性的优化,计算机系统就可以依据需求(如,数据库、邮件服务器等)选择不同的存储系统,促进性能提升,框架的意义尽显于此。
高屋建瓴部分结束。
下面是利用这个理论的一个落脚点:缓存管理优化,并在Ext3和NTFS文件系统的原型构建。具体来说利用这个I/O分类信息,对缓存算法进行选择性分配(selective allocation)和选择性驱逐(selective eviction),即缓存分配和替换。取得了比较好的优化结果,而且并没有改变原来块访问逻辑。
为了说明方法的灵活性,再在数据库Postgresql中优化缓存系统,添加一个POXIS文件标识,当文件通过标识打开时,操作系统从用户提供的数据中提取类型信息,绑定I/O请求。这种方法同样适用与其他应用层的类型。
论断摘要
1.计算机系统的性能常常有底层存储系统决定。
木桶效应,I/O最慢。
2.完全重新实现一个套计算机系统与存储系统交互的模式不可取。
毕竟各自都很复杂并有庞大的产业链。
3.操作系统,文件系统,存储系统,应用程序皆需要作出贡献,本着尽量兼容的原则。
垂直优化,是系统优化的关键。相应地,水平优化可能是某个特定领域的算法对比(比如NTFS vs Ext4)。