论文部分内容阅读
随着石油物探数据采集量的高速增长,石油物探数据处理的I/O性能逐渐成为系统的瓶颈。由于当前行业内主要使用NFS(Network File System)文件系统来存储数据,所以NFS服务器的性能对整个系统的性能影响较大。另一方面,处理石油物探数据的集群规模也越来越大,但是整个集群的效率却在不断下降,而异构并行的石油物探数据处理软件开发难度较大。所以,现阶段的处理软件性能的提升依赖于集群中每个NFS I/O节点的性能的提高。
石油物探数据处理对单节点的I/O访问具有局部性弱、随机性强、访问粒度小等特点,传统的优化方法不能对其加速。因此,本文设计并实现了一种NFS预调度机制(NFS Pre-Schedule,NPS)来优化石油物探数据处理系统的I/O性能。基于石油物探数据处理系统的I/O访问特点,该机制对传统的I/O调度技术、缓存技术和预取技术进行了改进,并取得了如下成果:
(1)在NFS文件系统层设计了一种基于磁盘物理地址的I/O预调度策略。通过提前获取应用的访问序列,本策略对磁盘物理地址访问序列进行了局部重排序,大幅度减小了磁盘的寻道时间,从而提高了系统的I/O性能。
(2)以高速存储设备为慢速磁盘的缓存,设计了一种两级存储的I/O加速系统。该系统通过预先知道的访问序列对数据进行预取,并缓存预取的数据到高速存储设备。在缓存命中的情况下,该系统可以提供等同高速存储设备的I/O性能。
(3)针对NPS系统中访问序列的同步问题,提出了一种无阻塞生产者消费者模型的解决方案。由于Linux系统中用户态与内核态通信资源的限制,该模型中的生产者不能睡眠。本文通过增加调度操作、修改P操作和V操作等方法突破了Linux的资源限制。
实验表明,NPS系统中NFS服务器端的内存容量对性能基本没有影响,而排序窗口和预取线程数对NPS系统的性能影响较大。测试过程中,NPS系统中数据预取的命中率达到99%以上,这导致在I/O排序窗口为2GB时,系统性能比优化前提升了7.5倍。