国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于內(nèi)存的臨時(shí)文件中轉(zhuǎn)系統(tǒng)構(gòu)建探析

2019-09-10 07:22楊勇華
現(xiàn)代信息科技 2019年4期
關(guān)鍵詞:內(nèi)存

摘 要:CPU內(nèi)核運(yùn)行很快,存儲(chǔ)器則相對(duì)較慢,二者在速度上存在明顯差距,導(dǎo)致系統(tǒng)性能受限。在內(nèi)存背景下,對(duì)臨時(shí)文件中轉(zhuǎn)系統(tǒng)進(jìn)行了設(shè)計(jì)和優(yōu)化,經(jīng)測(cè)試效果良好。本文簡(jiǎn)要論述了相關(guān)技術(shù),并深入探討了內(nèi)存背景下臨時(shí)文件中轉(zhuǎn)系統(tǒng)設(shè)計(jì),為后續(xù)各項(xiàng)工作的開(kāi)展奠定良好的基礎(chǔ)。

關(guān)鍵詞:內(nèi)存;臨時(shí)文件;中轉(zhuǎn)系統(tǒng);CPU內(nèi)核

中圖分類(lèi)號(hào):TP333;TP338 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 引 言

現(xiàn)階段,超級(jí)計(jì)算機(jī)已經(jīng)被廣泛應(yīng)用到科技、金融、工業(yè)、軍事等各個(gè)領(lǐng)域,但其運(yùn)行效率較低,通常在10%以下,加上處理器和存儲(chǔ)器存在性能差距,使得I/O遭遇科研瓶頸。針對(duì)這種情況,可把內(nèi)存文件系統(tǒng)直接建立在內(nèi)存上,使大規(guī)模并行漏洞挖掘系統(tǒng)性能得到明顯改善。Ramdisk能夠加速文件讀取,操作過(guò)程簡(jiǎn)單,把內(nèi)存格式轉(zhuǎn)變成虛擬磁盤(pán)即可,但空間更改難度大,不僅要對(duì)內(nèi)核配置參數(shù)進(jìn)行修改,還要對(duì)內(nèi)核進(jìn)行重新編譯,且無(wú)法借助內(nèi)存進(jìn)行快速訪問(wèn)。Ramfs把Linux磁盤(pán)緩沖機(jī)制作成以RAM為基礎(chǔ)的動(dòng)態(tài)可擴(kuò)展虛擬文件系統(tǒng),在頁(yè)緩存中直接存儲(chǔ)數(shù)據(jù),性能強(qiáng),可自動(dòng)擴(kuò)展空間,但“臟頁(yè)”無(wú)法回收,若不斷寫(xiě)入數(shù)據(jù),很容易因內(nèi)存不足導(dǎo)致系統(tǒng)崩潰。ramfs經(jīng)優(yōu)化發(fā)展成tmps,其構(gòu)建基礎(chǔ)是虛擬內(nèi)存子系統(tǒng),優(yōu)化亮點(diǎn)為增大監(jiān)控空間和交換分區(qū)使用。因外存為交換分區(qū)數(shù)據(jù)存儲(chǔ)位置,很容易對(duì)訪問(wèn)速度造成干擾,使其遲滯。本研究中,存儲(chǔ)方法為集中式,以全局的Lustre并行文件系統(tǒng)為基礎(chǔ),適用于大尺寸、連續(xù)讀寫(xiě)類(lèi)文件,然而其讀取性能又會(huì)受小文件影響,用戶很難獲取管理員權(quán)限,導(dǎo)致ramfs等內(nèi)存系統(tǒng)文件不成立。本文優(yōu)選用戶級(jí)內(nèi)存文件訪問(wèn)方法,對(duì)以內(nèi)存為基礎(chǔ)的臨時(shí)文件中轉(zhuǎn)系統(tǒng)化進(jìn)行設(shè)計(jì),使系統(tǒng)性能得到了全面優(yōu)化和改進(jìn)。

1 關(guān)鍵技術(shù)

DCR是編程模型,又是分布式并行計(jì)算運(yùn)行框架。D、C、R分別指代分解、計(jì)算和規(guī)約。在該框架下,通過(guò)分解使單個(gè)大問(wèn)題以若干子問(wèn)題形式存在,經(jīng)過(guò)計(jì)算得出子問(wèn)題結(jié)果,再通過(guò)規(guī)約得到總問(wèn)題結(jié)果。用戶可依托該框架提高應(yīng)用程序編寫(xiě)質(zhì)量,使之與DCR編程模型相契合。這一框架摒棄細(xì)節(jié)性內(nèi)容,為用戶提供與之相對(duì)應(yīng)的接口。

一些問(wèn)題無(wú)論分解還是并行,都非常容易操作,可依托DCR編程模型實(shí)現(xiàn)。在該模型中,把原始問(wèn)題假定為:R=C(S)。其中,R、C、S分別表示結(jié)果、問(wèn)題計(jì)算過(guò)程、問(wèn)題輸入。這個(gè)編程模型對(duì)最初問(wèn)題提出明確要求,使之具備如下特性:輸入原始問(wèn)題時(shí),可把S分解為若干子集,各子集間無(wú)關(guān)聯(lián);同時(shí)計(jì)算分解出來(lái)的子集,各子集的計(jì)算沒(méi)有聯(lián)系;在S的子集計(jì)算結(jié)果已知的前提下,依托簡(jiǎn)單的規(guī)約,得出最終結(jié)果[1]。輸入S的子集計(jì)算過(guò)程非常嚴(yán)謹(jǐn),僅考慮該子集數(shù)據(jù)即可,無(wú)需與其他子集進(jìn)行信息交互。DCR框架由調(diào)度、計(jì)算和管理三個(gè)節(jié)點(diǎn)程序構(gòu)成。

現(xiàn)階段,DCR應(yīng)用場(chǎng)景可細(xì)分為普通和迭代式兩類(lèi)。DCR計(jì)算流程受應(yīng)用場(chǎng)景影響,不同的應(yīng)用場(chǎng)景下,DCR計(jì)算過(guò)程存在些微差別。DCR普通場(chǎng)景計(jì)算流程圖如圖1所示。

2 系統(tǒng)設(shè)計(jì)

以內(nèi)存為基礎(chǔ)的臨時(shí)文件中轉(zhuǎn)系統(tǒng),又稱(chēng)為臨時(shí)文件內(nèi)存交換,主要構(gòu)成元素包括生產(chǎn)者進(jìn)程、消費(fèi)者進(jìn)程、中轉(zhuǎn)進(jìn)程、注冊(cè)管理進(jìn)程,分別以P、C、E、R指代。在生產(chǎn)者進(jìn)程中,把文件F打開(kāi)、寫(xiě)入、關(guān)閉,而在消費(fèi)者進(jìn)程中,正確的實(shí)施方法是打開(kāi)、讀出、關(guān)閉文件。在該過(guò)程中,明確系統(tǒng)運(yùn)行流程,對(duì)內(nèi)存文件中轉(zhuǎn)流程具備清晰的認(rèn)識(shí),完成管理進(jìn)程注冊(cè)工作之后,創(chuàng)建臨時(shí)文件對(duì)象模型,并通過(guò)中轉(zhuǎn)進(jìn)程,在內(nèi)存背景下,達(dá)到良好的臨時(shí)文件中轉(zhuǎn)系統(tǒng)設(shè)計(jì)效果。

2.1 注冊(cè)管理進(jìn)程

算法:以ftok為基礎(chǔ),生成key值,其具有唯一性;發(fā)揮key值和msgget函數(shù)優(yōu)勢(shì),創(chuàng)建消息隊(duì)列;依托msgrcv對(duì)P/C的注冊(cè)/注銷(xiāo)請(qǐng)求結(jié)構(gòu)體data進(jìn)行接收。把data.action==0作為假設(shè)條件,使用msgsend把中轉(zhuǎn)進(jìn)程E的IP和port等信息發(fā)送出去。else(data.action==1)//TODO執(zhí)行注銷(xiāo)操作。

如果消息經(jīng)由消息隊(duì)列發(fā)送或者接收,需要依據(jù)實(shí)際情況對(duì)消息類(lèi)型進(jìn)行設(shè)置。此處的P和C消息類(lèi)型均為1。分別把注冊(cè)進(jìn)程的消息類(lèi)型和msgrcv函數(shù)需要接收的消息類(lèi)型設(shè)置為注冊(cè)進(jìn)程號(hào)和1,確保注冊(cè)進(jìn)程僅對(duì)P/C消息進(jìn)行接收,而非因接收自身消息出現(xiàn)錯(cuò)誤,使程序崩潰[2]。

2.2 臨時(shí)文件對(duì)象模型

臨時(shí)文件對(duì)象狀態(tài)轉(zhuǎn)移。在中轉(zhuǎn)系統(tǒng)中,中轉(zhuǎn)進(jìn)程E操作臨時(shí)文件對(duì)象之前,預(yù)先判斷其狀態(tài),繼而給出最終處理結(jié)果。該模型中,把臨時(shí)文件對(duì)象狀態(tài)變化作為重點(diǎn)關(guān)注內(nèi)容進(jìn)行設(shè)計(jì)。

臨時(shí)文件對(duì)象實(shí)現(xiàn)。文件對(duì)象創(chuàng)建完成,進(jìn)入初始化和關(guān)閉狀態(tài),借助init函數(shù)對(duì)其進(jìn)行清理。發(fā)揮上層文件操作接口優(yōu)勢(shì),調(diào)用該函數(shù),打開(kāi)或關(guān)閉系統(tǒng)。在文件中寫(xiě)入數(shù)據(jù),假使文件尺寸比文件對(duì)象默認(rèn)緩沖buf_size大,要對(duì)創(chuàng)建外部文件,在long_temp_file_handle變量中記錄句柄,在外部文件寫(xiě)入超出部分。依托該函數(shù)調(diào)用,實(shí)現(xiàn)相關(guān)功能。把文件位置指針作為參考指標(biāo),讀取文件對(duì)象中的各類(lèi)數(shù)據(jù)。若數(shù)據(jù)長(zhǎng)度比文件緩沖大,要借助文件描述符把存儲(chǔ)在磁盤(pán)臨時(shí)文件中的數(shù)據(jù)讀出來(lái)。通過(guò)函數(shù)調(diào)用,使之與系統(tǒng)調(diào)用read功能類(lèi)似。tfem_lseek函數(shù)要比tfem_read函數(shù)提前使用,在文件頭定位指針,使該函數(shù)從文件頭開(kāi)始便可進(jìn)行數(shù)據(jù)讀取。消費(fèi)者調(diào)用該函數(shù),發(fā)揮與lseek類(lèi)似的作用[3]。在tfem_lseek函數(shù)調(diào)用之前,使用tfem_stat函數(shù)得出文件大小。該函數(shù)的作用與系統(tǒng)函數(shù)stat獲取文件信息的作用相同。

2.3 中轉(zhuǎn)進(jìn)程

以內(nèi)存為基礎(chǔ)的臨時(shí)文件中轉(zhuǎn)系統(tǒng)中,以文件對(duì)象形式在文件對(duì)象數(shù)組中對(duì)相關(guān)文件進(jìn)行存儲(chǔ)。系統(tǒng)通過(guò)對(duì)常量temp_file_mum進(jìn)行預(yù)設(shè),繼而對(duì)進(jìn)程E中支持的最大臨時(shí)文件數(shù)進(jìn)行定義。在這一系統(tǒng)中,下標(biāo)文件對(duì)象數(shù)組,尋找臨時(shí)文件。把兩個(gè)映射設(shè)置在中轉(zhuǎn)進(jìn)程E中,用于注冊(cè)或者注銷(xiāo)文件名。

首個(gè)映射指的是臨時(shí)文件名稱(chēng)至臨時(shí)文件對(duì)象數(shù)組下標(biāo)的映射,用open()函數(shù)把單個(gè)文件打開(kāi),用于對(duì)臨時(shí)文件系統(tǒng)中是否已存在同名文件做出準(zhǔn)確判斷。若把已存在文件打開(kāi),無(wú)法成功調(diào)用open()函數(shù)。第二個(gè)映射即臨時(shí)文件對(duì)象數(shù)組下標(biāo)至臨時(shí)文件名稱(chēng)的映射,使用close()函數(shù)關(guān)閉單個(gè)文件時(shí),通過(guò)在臨時(shí)文件對(duì)象數(shù)組下標(biāo)臨時(shí)文件,得出文件名。把這一文件從首個(gè)映射中刪除,繼而對(duì)init()函數(shù)進(jìn)行調(diào)用,從中轉(zhuǎn)系統(tǒng)中把這一文件清除。

文件由中轉(zhuǎn)進(jìn)程E接收,并把請(qǐng)求open()打開(kāi),處理算法為:經(jīng)由文件名filename對(duì)map1進(jìn)行查找,準(zhǔn)確判斷文件狀態(tài),若存在,那么使用get_state()把該文件狀態(tài)s求出來(lái),把s==WAIT作為假定條件,依托set_state()對(duì)文件狀態(tài)進(jìn)行設(shè)置,使之以read形式存在,最后返回文件描述符temp_file_index。反之,如果不存在,除了重新分配表項(xiàng)之外,還借助init()實(shí)現(xiàn)初始化。借助set_state()更該新文件狀態(tài),使之以write存在,并在map1和map2中投入新元素,返回該文件描述符temp_file_index,更新文件對(duì)象數(shù)組當(dāng)前位置下標(biāo)[4]。

文件關(guān)閉請(qǐng)求close()被中轉(zhuǎn)進(jìn)程E接收后的處理算法描述:文件狀態(tài)s由fd和get_state得出,把文件狀態(tài)設(shè)置為WAIT,給出正確處理結(jié)果后,返回,break。以INVALID對(duì)文件狀態(tài)進(jìn)行設(shè)置,把這一元素從文件對(duì)象數(shù)組中釋放出來(lái),分別在map1和map2中刪除對(duì)應(yīng)映射,并得出文件名,還要在map2中把fd映射刪除,報(bào)錯(cuò)。

3 結(jié) 論

綜上,基于內(nèi)存的臨時(shí)文件中轉(zhuǎn)系統(tǒng)研究和設(shè)計(jì)是一項(xiàng)長(zhǎng)期工作,實(shí)施難度大,需要考慮諸多專(zhuān)業(yè)性內(nèi)容。實(shí)際操作中,要對(duì)各類(lèi)關(guān)鍵技術(shù)進(jìn)行考量,在系統(tǒng)設(shè)計(jì)過(guò)程中,注冊(cè)管理進(jìn)程,創(chuàng)建臨時(shí)文件對(duì)象模型,優(yōu)選用戶級(jí)內(nèi)存數(shù)據(jù)交換方法,生成以內(nèi)存為基礎(chǔ)的臨時(shí)文件中轉(zhuǎn)系統(tǒng),以此對(duì)原有進(jìn)程之間的文件數(shù)據(jù)傳遞進(jìn)行替代,實(shí)現(xiàn)性能改進(jìn)。

參考文獻(xiàn):

[1] 馮靜,夏林峰,劉峰.基于內(nèi)存的臨時(shí)文件中轉(zhuǎn)系統(tǒng)研究與設(shè)計(jì) [J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(4):75-79+121.

[2] 趙偉舟.計(jì)算機(jī)文件安全管理系統(tǒng)研究與設(shè)計(jì) [J].電腦知識(shí)與技術(shù),2017,13(4):34-36.

[3] 一笑.去蕪存菁,管好Win8臨時(shí)文件有講究 [J].電腦知識(shí)與技術(shù)(經(jīng)驗(yàn)技巧),2014(12):30-32.

[4] 劉景云.開(kāi)發(fā)閑置內(nèi)存,為本本輕松提速 [J].電腦知識(shí)與技術(shù)(經(jīng)驗(yàn)技巧),2017(1):94-97.

作者簡(jiǎn)介:楊勇華(1984.02-),男,漢族,廣東河源人,計(jì)算機(jī)講師,畢業(yè)于廣東藥學(xué)院,本科,研究方向:計(jì)算機(jī)科學(xué)與技術(shù)。

猜你喜歡
內(nèi)存
隱超DDR5 5600AOFRUS DDFR55200 16GBx2內(nèi)存套裝實(shí)戰(zhàn)
為十二代酷睿而生 KingstonFURY野獸DDR55200內(nèi)存實(shí)戰(zhàn)體驗(yàn)
燈效、性能都不能少 海盜船DOMINATOR鉑金RGBDDR55200內(nèi)存深度體驗(yàn)
不僅能超頻,價(jià)格還便宜兩款國(guó)產(chǎn)內(nèi)存新品
筆記本升級(jí)內(nèi)存,有4件事你必須提前做
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無(wú)須等待
安裝多條內(nèi)存,位置有講究
內(nèi)存優(yōu)化 釋放無(wú)端占用
內(nèi)存搭配DDR4、DDR3L還是DDR3?
莫要浪費(fèi)大內(nèi)存 活用“內(nèi)存硬盤(pán)”為PC提速