一句话:提出基于缺页异常的流式内存抽象,用普通指针模拟无限缓冲区,并实现高速 I/O、线程间传输与原地基数排序。
数据分析和集群计算常需处理远大于 RAM 的数据,但现有流式 I/O 抽象要么易用性差,要么性能受限。Vortex 提出一组算法,主动让应用在顺序处理流时触发访问违例(缺页),并在底层透明处理这些缺页,从而在普通 C/C++ 指针上营造出无限缓冲区。基于该抽象,作者实现了文件 I/O 包装、有界生产者-消费者流水线、消失数组、键分区引擎以及新的原地基数排序。评估表明,该系统是多种流式 I/O、线程间数据传递和键混洗中最简单且最快的平台,其中原地基数排序比此前最佳方法快 3–4 倍。
Many applications in data analytics, information retrieval, and cluster computing process huge amounts of information. The complexity of involved algorithms and massive scale of data require a programming model that can not only offer a simple abstraction for inputs larger than RAM, but also squeeze maximum performance out of the available hardware. While these are usually conflicting goals, we show that this does not have to be the case for sequentially-processed data, i.e., in streaming applications. We develop a set of algorithms called Vortex that force the application to generate access violations (i.e., page faults) during processing of the stream, which are transparently handled in such a way that creates an illusion of an infinite buffer that fits into a regular C/C++ pointer. This design makes Vortex by far the simplest-to-use and fastest platform for various types of streaming I/O, inter-thread data transfer, and key shuffling. We introduce several such applications -- file I/O wrapper, bounded producer-consumer pipeline, vanishing array, key-partitioning engine, and novel in-place radix sort that is 3-4 times faster than the best prior approaches.
@inproceedings{paperbot5468,
title = {Vortex: Extreme-Performance Memory Abstractions for Data-Intensive Streaming Applications},
author = {Carson Hanel and Arif Arman and Di Xiao and John Keech and Dmitri Loguinov},
booktitle = {ASPLOS},
year = {2020},
doi = {10.1145/3373376.3378527}
}