2

存储是移动应用性能的瓶颈?

 2 years ago
source link: https://blog.yxwang.me/2012/06/revisiting-storage-for-smartphones/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

存储是移动应用性能的瓶颈?

Mon, Jun 11, 2012 • Computer System

Revisiting Storage for Smartphones 是今年 FAST 会议上的最佳论文,这篇论文提出了一个违背直觉的观点,很有意思。这里简单介绍一下这篇论文的内容,有兴趣的朋友可以直接访问前面的链接下载原文或是观看现场录像。

传统的观点认为,移动应用性能的主要瓶颈在网络和 CPU,而闪存的读写速率明显高于网络传输速度,不会成为性能的瓶颈。然而,根据上图作者给出的关于移动存储性能的图例(纵坐标单位为 Mbps,本文图片均来自演讲 slides 和原论文),我们可以看到,虽然移动存储顺序读写的性能明显高于 wifi 和 3G,但是随机写的性能却比它们差很多,因此移动存储成为应用性能瓶颈是完全有可能的。

为了证明移动存储的确会给应用带来不小的性能影响,作者在 Nexus One 上尝试了多个应用,并测试它们在使用不同配置时的性能表现。

下图为一个浏览器应用的测试结果(基于 WebKit,测试了 50 个网站)。左侧柱状图展示了使用不同价位的存储卡时,该测试的性能表现。可以看到,不同存储卡的带来的性能影响非常大,Kingston 甚至产生了 20 倍左右的性能差别。另外值得注意的是,图中蓝色柱子表示的是在 wifi 条件下的性能,灰色柱子表示的是通过 USB 连接电脑网络时的性能。右侧柱状图中可以看到,USB 连接网络的性能比 wifi 连接快 10 倍左右,即使如此,左图中蓝色柱和灰色柱的差别不大,从而可以看出网络提升 10 倍后对总的性能影响还是不大(不过我觉得这里 wifi 连接的速度已经很快了,可能加一个 3G 的测试会更公平一点)。

作者还测试了 Facebook、地图、邮件、安装程序等应用在不同配置下的表现,均得出了好的闪存卡能明显提升应用速度的结论。

既然存储卡的性能影响这么大,有没有优化的空间呢?上图是作者关于浏览器优化的一些测试。浏览器保存在磁盘上的数据主要有两种,一种是缓存,以 write-back 的方式写到磁盘;另一种是缓存索引等数据,以同步的方式写到磁盘的 SQLite 数据库文件中。上图中可以看到,把浏览器的缓存放在内存中对性能提升并不大(A),把数据库文件放到内存中则能明显提升应用的性能(B),而如果把数据库文件的写操作改成异步的方式,也能提升应用的性能(D)。由此可见,SQLite 数据库操作是影响应用性能的主要原因。应用使用 SQLite 数据库有时只是为了方便,而不需要它保证一定的可靠性。同时可以看出 SQLite 的写操作是相当随机的。

最后作者还给出了一些可能的优化的方案,例如使用 RAID,采用日志式文件系统,或是由应用指定异步/同步操作等。不过这些都不是这篇论文的重点了。可以预见的是,这篇论文挖了一个好坑,将来肯定会有更多的论文研究如何提高闪存上移动应用存储的性能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK