论文部分内容阅读
图计算作为一类重要的大数据计算,应用十分广泛。伴随着图数据规模的迅速增长,人们试图使用二级存储设备对图计算系统进行扩展,以期设计更高性价比的图计算系统。但因为二级存储设备相较于内存随机访问性能弱,所以这种方式使得存储I/O成为整个图计算系统的性能瓶颈。本文为解决这个问题,从三个角度对图计算系统的I/O软件层次进行了优化。首先,我们分析了基于二级存储的图计算系统相较于基于内存的图计算系统在内存利用率方面的不足。针对这个问题,我们设计了能高效利用内存进行数据缓存的优化方法,将数据访问尽可能转移到对内存的访问,从而减少对慢速二级存储的访问。同时该方法可以避免缓存内存到目标内存的拷贝,并将系统调用的数量从O(n3)降低到O(n2),进一步提升了图计算系统的整体性能。其次我们发现,对于图数据访问I/O的不均衡也会导致系统整体性能的下降。因此,我们在图计算预处理阶段对图数据进行划分,使得每块存储设备上的数据量尽可能一致,保证设备并行工作的状态以提高I/O聚合带宽。最后我们针对图计算应用了用户态I/O的优化方法,利用用户态轻量级的软件栈替换基于内核的存储软件栈。上述三种优化方式分别在前一系统的基础上加速50倍、2倍和1.23倍。对于远远超过内存容量的大规模图数据,优化后的系统较目前国内外最先进的同类型系统Chaos加速了近11倍,进一步缩小了与完全基于内存的计算系统之间的差距,证明基于二级存储的图计算系统不仅低能耗、高性价比,同时也有非常高的性能潜力。