一句话:提出流式外存计算与细粒度数据并行的 IFDS 框架 DStream,显著降低内存占用并加速大规模程序分析。
IFDS 框架能够在有限域上以分配式流函数精确求解一大类过程间数据流分析问题,但将其扩展到大规模程序面临内存消耗巨大与分析效率低下的双重挑战。本文提出 DStream,一个面向大规模程序精确、高度并行 IFDS 分析的可扩展系统。DStream 采用基于流式处理的外存(out-of-core)计算模型,大幅降低内存占用,并引入细粒度数据并行以提升效率。作者以污点分析作为 DStream 的实例实现,并与三个当前最先进的工具进行对比。实验表明,在内存受限的普通 PC 上,DStream 相比其他工具平均获得 4.37 倍至 14.46 倍的加速,并成功扩展到 FlowDroid、DiskDroid 等最先进工具无法分析的大规模程序。
The IFDS framework supports interprocedural dataflow analysis with distributive flow functions over finite domains. A large class of interprocedural dataflow analysis problems can be formulated as IFDS problems and thus can be solved with the IFDS framework precisely. Unfortunately, scaling IFDS analysis to large-scale programs is challenging in terms of both massive memory consumption and low analysis efficiency. This paper presents DStream, a scalable system dedicated to precise and highly parallel IFDS analysis for large-scale programs. DStream leverages a streaming-based out-of-core computation model to reduce memory footprint significantly and adopts fine-grained data parallelism to achieve efficiency. We implemented a taint analysis as a DStream instance analysis and compared DStream with three state-of-the-art tools. Our exper-iments validate that DStream outperforms all other tools with average speedups from 4.37x to 14.46x on a commodity PC with limited available memory. Meanwhile, the experiments confirm that DStream successfully scales to large-scale programs which the state-of-the-art tools (e.g., FlowDroid and/or DiskDroid) fail to analyze.