基于内存的临时文件中转系统研究与设计毕业论文
2021-03-16 22:58:15
摘 要
随着处理器和存储器之间性能差距越来越大,特别是处理器和外存之间的巨大差距使得I/O瓶颈问题日益突出。因此在内存上直接建立内存文件系统的方法应运而生。目前,为了缓解I/O瓶颈而产生的基于内存的文件系统主要包括Ramdisk、Ramfs、tmpfs等。
随着我国“天河二号”和“神威·太湖之光”等超级计算机连续问鼎全球超级计算第一名,标志着我国在高性能计算硬件技术方面已经取得了长足的进步,这为需要大规模计算的软件系统提供了强大计算能力支撑。“天河二号”采用了集中式存储,使用全局的Lustre并行文件系统,该文件系统对于大尺寸,连续读写的文件操作性能较好。但是对于那些会产生大量的临时小文件的系统,天河的集中式存储会严重影响到整体性能。此外,“天河二号”超级计算机系统中无法掌握计算节点的根用户权限,无法创建Ramfs等内存文件系统。
为了解决上述问题,本文利用Linux消息队列、socket网络编程、文件I/O等技术研究了如何实现一个基于内存的临时文件中转系统,包括注册管理进程的设计与实现、临时文件对象的设计与实现、中转进程的设计与实现。同时,本文还介绍了临时文件中转系统对3种客户端文件的不同处理。
最后,本文在一个基于DCR分布式并行计算框架和“天河二号”超级计算机的漏洞挖掘系统上进行了对比测试,结果良好,这对改善“天河二号”超级计算机集中式存储的瓶颈具有指导意义。
关键词:I/O瓶颈;Linux消息队列;socket网络编程;内存临时文件系统
Abstract
As the performance gap between the processor and the storage is growing, especially the huge one between the processor and the external storage, the I/O bottleneck problem have become increasingly prominent. So, the approach of establishing in-memory file system arises at he historic moment. At present, there are several approaches of using memory to alleviate the I/O bottleneck, such as Ramdisk, Ramfs and tmpfs.
In our country, as the super computer such as “Tianhe-2” and “Sunway TaihuLight” won the first place in a row in supercomputing in the world, it marks our country has made great progress in high-performance computing hardware technology. And this provides powerful support of computing power for those software systems which need large-scale computation. “Tianhe-2” applys a centralized storage, which uses Lustre parallel file system. And this file system has a better performance for handling continuous read/write files of having large size. For those systems which will produce a large amount of temporary files of having small size, the application of centralize storage for “Tianhe-2” can seriously hinder the overall lperformance. Moreover, we couldn’t get the root access of compute nodes of “Tianhe-2”. So we can’t create in-memory file system like Ramfs.
In order to solve the above problems, I studied how to design and realize a in-memory temporary file system with applying some technology such as Linux message queue, network programming with socket, unbuffered I/O and so on. This system’ main task is to design register manager process, temporary file object, and exchange process. At the meantime, I also introduced different processing methods of 3 different client file.
At last, I made a comparison test. This file system is tested in a vulnerability mining system based on a distributed and parallel computation framework(DCR) and the “Tianhe-2”. The result of study is better, which has a guiding significance for improving the bottleneck of centralized storage of “Tihanhe-2”.
Key Words: I/O bottleneck;Linux message queue;network programming with socket;in-memory temporary file system
目 录
第1章 绪论 1
1.1 研究背景及意义 1
1.2 研究现状 1
1.3 研究内容 2
1.4 论文结构 3
第2章 系统相关技术 4
2.1 Linux消息队列 4
2.1.1 消息队列概述 4
2.2 Linux下socket网络编程 4
2.2.1 socket网络编程概述 4
2.3 Linux文件I/O函数简介 6
2.4 DCR分布式并行计算框架简介 7
2.4.1 DCR简介 7
2.4.2 DCR在天河二号超级计算机上运行 9
第3章 基于内存的临时文件中转系统设计与实现 11
3.1临时文件中转系统总体结构设计 11
3.2 注册管理进程的设计与实现 13
3.2.1 主要数据结构定义 13
3.2.2 注册管理进程的实现 14
3.3 临时文件对象模型的设计与实现 15
3.3.1 主要数据结构定义 15
3.3.2 临时文件对象状态转移图 16
3.3.3 临时文件对象的实现 17
3.4 中转进程的设计与实现 22
3.4.1 文件名管理的设计与实现 22
3.4.2 数据交换缓冲的设计与实现 24
第4章 中转系统对3种不同客户端文件的处理 26
4.1主要数据结构定义 26
4.2 对Linux下文件I/O函数的处理 27
4.2.1 利用TFEM_open函数替换open函数 27
4.2.2 利用TFEM_write函数替换write函数 27
4.2.3 利用TFEM_read函数替换read函数 28
4.2.4 利用TFEM_close函数替换close函数 28
4.2.5 利用TFEM_lseek0函数替换lseek函数 29
4.3 对Linux下标准I/O函数fopen/fclose的处理 29
4.3.1 Linux中函数fmemopen与open_memstream介绍 29
4.3.2 对fopen/fclose函数替换算法的设计 29
4.4 对C 输出流ostream的处理 31
第5章 在漏洞挖掘软件系统上的应用测试 32
5.1 漏洞挖掘软件系统介绍 32
5.2实验结果分析 36
5.2.1 实验环境 36
5.2.2 性能测试 37
5.3 本章小结 39
结论 40
1. 论文工作总结 40
2. 论文工作展望 40
参考文献 41
致谢 42
第1章 绪论
1.1 研究背景及意义
超级计算机是一个国家科研实力的体现,它对国家安全,经济和社会发展具有举足轻重的意义,是国家科技发展水平和综合国力的重要标志,从世界的范围来看,超级计算机的应用目前几乎已涉及科学技术、工业设计、金融和经济管理以及军事国防等相关的各种领域[1]。
目前,大多数实际应用在超级计算机上的运行效率较低,基本都低于10%,有的甚至低于1%。随着处理器和存储器之间性能差距越来越大,特别是处理器和外存之间的巨大差距使得I/O瓶颈问题日益突出,因此在内存上直接建立内存文件系统的方法应运而生[2]。本文研究的意义即实现一个基于内存的临时文件中转系统来改进“天河二号”超级计算机采用集中式存储而导致的对大量小文件I/O的瓶颈问题,以此来改善运行于“天河二号”超级计算机上的一套大规模并行漏洞挖掘系统的性能问题。
1.2 研究现状
由于计算机的性能由最慢的设备决定,因此访问外存的I/O操作成为影响计算机性能的瓶颈,文件系统作为组织、存储和访问数据的机制,受到I/O瓶颈的影响尤为突出[2]。因而利用内存来缓解I/O瓶颈变得越来越有必要。目前为了缓解I/O瓶颈而产生的基于内存的文件系统主要包括Ramdisk[3]、Ramfs[4]、tmpfs[5]。