基于内存的临时文件中转系统构建探析
2019-09-10杨勇华
摘 要:CPU内核运行很快,存储器则相对较慢,二者在速度上存在明显差距,导致系统性能受限。在内存背景下,对临时文件中转系统进行了设计和优化,经测试效果良好。本文简要论述了相关技术,并深入探讨了内存背景下临时文件中转系统设计,为后续各项工作的开展奠定良好的基础。
关键词:内存;临时文件;中转系统;CPU内核
中图分类号:TP333;TP338 文献标识码:A 文章编号:2096-4706(2019)04-0079-03
Construction of Temporary File Transfer System Based on Memory
YANG Yonghua
(Heyuan Technology School,Heyuan 517002,China)
Absrtact:The CPU kernel runs very fast,while the memory is relatively slow. There is a significant difference in speed between the two,which results in system performance constraints. Under the background of memory,the interim file transfer system is designed and optimized,and the result is very good after testing. This paper briefly discusses the related technology,and deeply discusses the design of temporary file transfer system under the background of memory,which lays a good foundation for the follow-up work.
Keywords:memory;temporary file;transit system;CPU kernel
0 引 言
現阶段,超级计算机已经被广泛应用到科技、金融、工业、军事等各个领域,但其运行效率较低,通常在10%以下,加上处理器和存储器存在性能差距,使得I/O遭遇科研瓶颈。针对这种情况,可把内存文件系统直接建立在内存上,使大规模并行漏洞挖掘系统性能得到明显改善。Ramdisk能够加速文件读取,操作过程简单,把内存格式转变成虚拟磁盘即可,但空间更改难度大,不仅要对内核配置参数进行修改,还要对内核进行重新编译,且无法借助内存进行快速访问。Ramfs把Linux磁盘缓冲机制作成以RAM为基础的动态可扩展虚拟文件系统,在页缓存中直接存储数据,性能强,可自动扩展空间,但“脏页”无法回收,若不断写入数据,很容易因内存不足导致系统崩溃。ramfs经优化发展成tmps,其构建基础是虚拟内存子系统,优化亮点为增大监控空间和交换分区使用。因外存为交换分区数据存储位置,很容易对访问速度造成干扰,使其迟滞。本研究中,存储方法为集中式,以全局的Lustre并行文件系统为基础,适用于大尺寸、连续读写类文件,然而其读取性能又会受小文件影响,用户很难获取管理员权限,导致ramfs等内存系统文件不成立。本文优选用户级内存文件访问方法,对以内存为基础的临时文件中转系统化进行设计,使系统性能得到了全面优化和改进。
1 关键技术
DCR是编程模型,又是分布式并行计算运行框架。D、C、R分别指代分解、计算和规约。在该框架下,通过分解使单个大问题以若干子问题形式存在,经过计算得出子问题结果,再通过规约得到总问题结果。用户可依托该框架提高应用程序编写质量,使之与DCR编程模型相契合。这一框架摒弃细节性内容,为用户提供与之相对应的接口。
一些问题无论分解还是并行,都非常容易操作,可依托DCR编程模型实现。在该模型中,把原始问题假定为:R=C(S)。其中,R、C、S分别表示结果、问题计算过程、问题输入。这个编程模型对最初问题提出明确要求,使之具备如下特性:输入原始问题时,可把S分解为若干子集,各子集间无关联;同时计算分解出来的子集,各子集的计算没有联系;在S的子集计算结果已知的前提下,依托简单的规约,得出最终结果[1]。输入S的子集计算过程非常严谨,仅考虑该子集数据即可,无需与其他子集进行信息交互。DCR框架由调度、计算和管理三个节点程序构成。
现阶段,DCR应用场景可细分为普通和迭代式两类。DCR计算流程受应用场景影响,不同的应用场景下,DCR计算过程存在些微差别。DCR普通场景计算流程图如图1所示。
2 系统设计
以内存为基础的临时文件中转系统,又称为临时文件内存交换,主要构成元素包括生产者进程、消费者进程、中转进程、注册管理进程,分别以P、C、E、R指代。在生产者进程中,把文件F打开、写入、关闭,而在消费者进程中,正确的实施方法是打开、读出、关闭文件。在该过程中,明确系统运行流程,对内存文件中转流程具备清晰的认识,完成管理进程注册工作之后,创建临时文件对象模型,并通过中转进程,在内存背景下,达到良好的临时文件中转系统设计效果。
2.1 注册管理进程
算法:以ftok为基础,生成key值,其具有唯一性;发挥key值和msgget函数优势,创建消息队列;依托msgrcv对P/C的注册/注销请求结构体data进行接收。把data.action==0作为假设条件,使用msgsend把中转进程E的IP和port等信息发送出去。else(data.action==1)//TODO执行注销操作。
如果消息经由消息队列发送或者接收,需要依据实际情况对消息类型进行设置。此处的P和C消息类型均为1。分别把注册进程的消息类型和msgrcv函数需要接收的消息类型设置为注册进程号和1,确保注册进程仅对P/C消息进行接收,而非因接收自身消息出现错误,使程序崩溃[2]。
2.2 临时文件对象模型
临时文件对象状态转移。在中转系统中,中转进程E操作临时文件对象之前,预先判断其状态,继而给出最终处理结果。该模型中,把临时文件对象状态变化作为重点关注内容进行设计。
臨时文件对象实现。文件对象创建完成,进入初始化和关闭状态,借助init函数对其进行清理。发挥上层文件操作接口优势,调用该函数,打开或关闭系统。在文件中写入数据,假使文件尺寸比文件对象默认缓冲buf_size大,要对创建外部文件,在long_temp_file_handle变量中记录句柄,在外部文件写入超出部分。依托该函数调用,实现相关功能。把文件位置指针作为参考指标,读取文件对象中的各类数据。若数据长度比文件缓冲大,要借助文件描述符把存储在磁盘临时文件中的数据读出来。通过函数调用,使之与系统调用read功能类似。tfem_lseek函数要比tfem_read函数提前使用,在文件头定位指针,使该函数从文件头开始便可进行数据读取。消费者调用该函数,发挥与lseek类似的作用[3]。在tfem_lseek函数调用之前,使用tfem_stat函数得出文件大小。该函数的作用与系统函数stat获取文件信息的作用相同。
2.3 中转进程
以内存为基础的临时文件中转系统中,以文件对象形式在文件对象数组中对相关文件进行存储。系统通过对常量temp_file_mum进行预设,继而对进程E中支持的最大临时文件数进行定义。在这一系统中,下标文件对象数组,寻找临时文件。把两个映射设置在中转进程E中,用于注册或者注销文件名。
首个映射指的是临时文件名称至临时文件对象数组下标的映射,用open()函数把单个文件打开,用于对临时文件系统中是否已存在同名文件做出准确判断。若把已存在文件打开,无法成功调用open()函数。第二个映射即临时文件对象数组下标至临时文件名称的映射,使用close()函数关闭单个文件时,通过在临时文件对象数组下标临时文件,得出文件名。把这一文件从首个映射中删除,继而对init()函数进行调用,从中转系统中把这一文件清除。
文件由中转进程E接收,并把请求open()打开,处理算法为:经由文件名filename对map1进行查找,准确判断文件状态,若存在,那么使用get_state()把该文件状态s求出来,把s==WAIT作为假定条件,依托set_state()对文件状态进行设置,使之以read形式存在,最后返回文件描述符temp_file_index。反之,如果不存在,除了重新分配表项之外,还借助init()实现初始化。借助set_state()更该新文件状态,使之以write存在,并在map1和map2中投入新元素,返回该文件描述符temp_file_index,更新文件对象数组当前位置下标[4]。
文件关闭请求close()被中转进程E接收后的处理算法描述:文件状态s由fd和get_state得出,把文件状态设置为WAIT,给出正确处理结果后,返回,break。以INVALID对文件状态进行设置,把这一元素从文件对象数组中释放出来,分别在map1和map2中删除对应映射,并得出文件名,还要在map2中把fd映射删除,报错。
3 结 论
综上,基于内存的临时文件中转系统研究和设计是一项长期工作,实施难度大,需要考虑诸多专业性内容。实际操作中,要对各类关键技术进行考量,在系统设计过程中,注册管理进程,创建临时文件对象模型,优选用户级内存数据交换方法,生成以内存为基础的临时文件中转系统,以此对原有进程之间的文件数据传递进行替代,实现性能改进。
参考文献:
[1] 冯静,夏林峰,刘峰.基于内存的临时文件中转系统研究与设计 [J].计算机应用与软件,2018,35(4):75-79+121.
[2] 赵伟舟.计算机文件安全管理系统研究与设计 [J].电脑知识与技术,2017,13(4):34-36.
[3] 一笑.去芜存菁,管好Win8临时文件有讲究 [J].电脑知识与技术(经验技巧),2014(12):30-32.
[4] 刘景云.开发闲置内存,为本本轻松提速 [J].电脑知识与技术(经验技巧),2017(1):94-97.
作者简介:杨勇华(1984.02-),男,汉族,广东河源人,计算机讲师,毕业于广东药学院,本科,研究方向:计算机科学与技术。