FAST:Quick Application Launch on Solid-State Drives

FAST:Quick Application Launch on Solid-State Drives(后简称 FAST ,请区别于 FAST 会议)这篇文章是 2011 FAST 会议上的一篇文章,题目中的 FAST 是 Fast Application STarter 的简称,读完本文最大的感触就是加深了:“并行性是计算机提高性能的重要手段 ”的理解。

从计算机的硬件来看,处理器流水线提高指令执行速度,处理器频率在受到温度制约后无法提升后,开始发展了多核、多处理器,内存也依靠双通道大量提升速度和容量,硬盘通过组成 RAID 提高读写速度和安全性。从软件来说,依靠多线程提高并发性也是改进程序性能的方法。FAST 文章主要是提出了将应用程序读操作时间和计算时间进行重叠以提升应用程序加载速度,我认为这就是讲 I/O 和计算进行并行提高性能的一种软方法,也是论文的主要贡献。

文章第二章背景知识中介绍了一些已有的应用程序启动的优化预取技术:

  • 应用程序级别优化
  • 快照技术
  • 基于预测的预取
  • 分类的预取(sorted prefetch)
  • 应用碎片重组
  • 基于Flash 缓存

这些预取机制因为种种原因要么不能够在 SSD 上得到较好的效果甚至反效果,要么不适用于 SSD 文中提到的冷启动(Cold starts)和热启动(Warm starts)指的是应用程序需要的文件全部从磁盘中读取和全部从内存中读取,它们分别代表着应用程序第一次加载到机器和应用程序直接从内存中加载的最差/最优情况。后面的实验结果也就是基于冷启动和热启动的效果进行比较。

下面简单介绍下 FAST 的应用情况,FAST 包含这么 6 个部分:

  1. 应用程序启动管理器
  2. 系统调用分析工具
  3. 磁盘 I/O 分析工具
  4. 应用程序序列提取器
  5. LBA 到 inode 的逆向转换映射
  6. 应用程序预取生成器

应用程序启动管理器在应用程序启动后判断是否存在该应用程序的预取工具,如果有的话进行预取,如果没有利用系统调用分析工具和磁盘 I/O 分析工具在空闲时间生成新应用程序的预取工具。系统调用分析工具利用的是 Linux 系统中的 strace 工具获得应用程序在启动的时候访问的文件名。磁盘 I/O 分析工具采用的是 LINUX 系统中的 Blktrace 工具,用来获取应用程序在启动时访问的数据块,应用程序序列提取器是从磁盘 I/O 分析工具中得到的数据块序列中得到应用程序真正加载的块(考虑到应用程序在加载过程中有许多其他程序或者系统 I/O 对真正需要分析的应用程序加载块 I/O 的干扰,这点还是很有意义的)。LBA 到 inode 的逆向转换映射将磁盘 I/O 分析工具得到对应的块映射到系统调用分析工具得到的文件名上,之所以需要做到这点是因为我们的预取是工作在应用程序层面的,我们的预取程序需要预取的是对应的文件名和文件的偏移量。最后应用程序预取生成器是用户级程序用于重现磁盘访问,自动为每个应用程序产生预取器(具体流程参见论文)。

组成部分介绍完毕,相信大家对 FAST 的工作有了一定的了解,接着我们从流程的角度来看:当一个应用程序启动后,首先应用程序启动管理器查看是否有该程序的预取器,如果存在就调用预取器进行内容的预取,如果没有该程序的预取器则使用系统调用分析工具和磁盘 I/O 分析工具,接着在系统空闲的时候分为两步:磁盘 I/O 分析工具记录下应用程序冷启动下读取的磁盘块,并通过应用程序序列提取器将其提取出真正的应用程序的启动序列。系统调用分析工具将对应的文件问交付给 LBA 到 inode 的逆向转换映射,将其转化为对应的 LBA 到 inode 的映射表。最后通过程序预取生成器生成应用程序预取器。

文章实验通过比较冷启动、热启动、sorted 预取和 FAST 预取的启动时间得到了 FAST 能在 SSD 得到好的预取效果,优于 sorted 预取,仅次于热启动。

文中也谈到了 FAST 可能在智能手机中的应用,因为首先智能手机是 Flash 使用最广泛的设备,其次智能手机应用程序的加载速度远慢于PC ,有较高的提升空间,最后比较智能手机应用程序冷启动时间和热启动时间,发现 FAST 在智能手机上有一定的提升能力。就我感觉,除了在智能手机,在我们的 linux 和 windows 启动的时候把必要的启动文件都存放在磁盘上连续的位置上并进行类似的将磁盘 I/O 时间和计算时间并行起来,一定也可以提高开机时间。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据