亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux系統(tǒng)對(duì)mlock原理及其性能的研究

        2021-05-20 06:56:32
        江蘇通信 2021年2期
        關(guān)鍵詞:進(jìn)程物理功能

        苗 杰

        國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心江蘇分中心

        0 引言

        在一些業(yè)務(wù)的使用過(guò)程中,嚴(yán)格時(shí)間相關(guān)的程序,鎖住物理內(nèi)存,可以避免內(nèi)存頁(yè)頻繁調(diào)出調(diào)入帶來(lái)的性能損耗。對(duì)于安全性要求較高的應(yīng)用程序,需要敏感數(shù)據(jù)被禁止輸出到交換文件中,否則程序結(jié)束后,攻擊者就可能從交換文件中恢復(fù)出這些敏感數(shù)據(jù)。Linux內(nèi)核通過(guò)mlock的四個(gè)函數(shù)來(lái)實(shí)現(xiàn)物理內(nèi)存頁(yè)的鎖定和解鎖,虛擬化環(huán)境中也可修改虛擬機(jī)的配置文件來(lái)啟用內(nèi)存鎖定功能,從而滿足一些應(yīng)用場(chǎng)景的需求。

        1 mlock簡(jiǎn)介及其原理

        mlock(memory locking)是Linux內(nèi)核實(shí)現(xiàn)內(nèi)存鎖定的一種方式,用來(lái)將進(jìn)程使用的部分或者全部的虛擬內(nèi)存鎖定到物理內(nèi)存中。mlock機(jī)制主要有以下功能:(1)被鎖定的物理內(nèi)存在被解鎖或進(jìn)程退出前,不會(huì)被頁(yè)回收流程處理;(2)被鎖定的物理內(nèi)存,不會(huì)被交換到swap設(shè)備;(3)進(jìn)程執(zhí)行mlock操作,立刻分配物理內(nèi)存。

        mlock機(jī)制提供以下四個(gè)函數(shù)供使用,如表1所示。

        表1 mlock相關(guān)函數(shù)

        每個(gè)進(jìn)程都擁有一段連續(xù)的虛擬內(nèi)存,內(nèi)核實(shí)際的使用情況并不是以整個(gè)虛擬內(nèi)存為管理單位,而是將整個(gè)虛擬內(nèi)存劃分為若干個(gè)虛擬內(nèi)存區(qū)域,內(nèi)核中使用vm_area_struct數(shù)據(jù)結(jié)構(gòu)來(lái)管理虛擬內(nèi)存區(qū)域,簡(jiǎn)稱vma。vma管理虛擬內(nèi)存的方式如圖1所示。

        圖1 vma管理虛擬內(nèi)存

        每一個(gè)vma代表一個(gè)已映射的、連續(xù)的且屬性相同(如可讀/寫)的虛擬內(nèi)存區(qū)域。內(nèi)核采用鏈表和AVL樹形式管理vma,鏈表用于遍歷,AVL樹用來(lái)查找。mlock操作會(huì)給相應(yīng)的vma的vm_flags置一個(gè)VM_LOCKED標(biāo)記,而這個(gè)標(biāo)記則會(huì)影響到物理內(nèi)存回收和交換。mlock鎖定的虛擬內(nèi)存區(qū)域,可能跟現(xiàn)有的vma管理的虛擬內(nèi)存區(qū)域并不完全重合,由于同一個(gè)vma的內(nèi)存屬性要求一致,而是否具有VM_LOCKED標(biāo)記也是其屬性之一,所以mlock操作可能導(dǎo)致現(xiàn)有的vma被合并或分割。vma的合并和分割如圖2所示。

        圖2 vma的合并和分割

        prev,next是已受鏈表管理的vma結(jié)構(gòu),new是將要新加入鏈表的vma。當(dāng)new加入時(shí),如果new的起始地址與prev的結(jié)束地址相同,且new屬性與prev屬性均為VM_LOCKED,則將prev和new合并成prev’。若new的結(jié)束地址與next的起始地址有重合,但next屬性是VM_EXEC,則next被分割成兩部分,一部分加入prev’,另一部分變成next’。

        Linux給進(jìn)程使用的虛擬內(nèi)存由LRU來(lái)管理,操作系統(tǒng)對(duì)LRU的實(shí)現(xiàn)主要基于一對(duì)雙向鏈表,active_list和inactive_list。同時(shí)引入兩個(gè)頁(yè)面標(biāo)志符PG_active和PG_referenced來(lái)標(biāo)識(shí)某個(gè)頁(yè)面的活躍程度,從而決定如何在兩個(gè)鏈表之間移動(dòng)頁(yè)面。

        內(nèi)核函數(shù)vmscan僅會(huì)遍歷掃描active_list和inactive_list鏈表來(lái)回收頁(yè)面。內(nèi)核在LRU中新增了一個(gè)unevictable_list,將不可回收的頁(yè)面都放在unevictable_list中,mlock的頁(yè)被放在unevictable_list中,同時(shí)給該頁(yè)置一個(gè)PG_mlocked標(biāo)記。除了mlock的頁(yè),ramdisk或ramfs的頁(yè)和共享內(nèi)存映射的頁(yè)也被放入unevictable_list中。

        解鎖并不立刻將解鎖的頁(yè)回收,而是將解鎖的頁(yè)放回active_list或inactive_list鏈表,然后交由頁(yè)回收流程處理,所以mlock的頁(yè)不會(huì)被頁(yè)回收流程處理。

        當(dāng)通過(guò)fork系統(tǒng)調(diào)用創(chuàng)建一個(gè)子進(jìn)程,子進(jìn)程將拷貝父進(jìn)程的整個(gè)虛擬內(nèi)存,包括對(duì)所有vma的拷貝,不過(guò)子進(jìn)程的vma并不繼承VM_LOCKED標(biāo)記。由于線程共享進(jìn)程資源,所以線程的vma將繼承VM_LOCKED標(biāo)記。

        2 mlock功能在虛擬化應(yīng)用中的實(shí)現(xiàn)

        從RHEL6.5GA版本中,Linux系統(tǒng)虛擬化libvirt已提供對(duì)mlock功能的支持。當(dāng)啟動(dòng)虛擬機(jī)時(shí),默認(rèn)情況下qemukvm進(jìn)程中的mlock功能是關(guān)閉的。若要開啟qemu-kvm進(jìn)程的mlock功能,需在虛擬機(jī)的xml文件中,添加如下配置行:

        網(wǎng)卡設(shè)備以PCI/Virtio方式添加到虛擬機(jī)時(shí),給虛擬機(jī)配置10GB的內(nèi)存,經(jīng)測(cè)試虛擬機(jī)啟動(dòng)后實(shí)際占用的物理內(nèi)存如下表2所示:

        表2 mlock功能對(duì)虛擬機(jī)內(nèi)存的影響

        3 mlock功能對(duì)訪問(wèn)內(nèi)存的影響

        進(jìn)程一般會(huì)訪問(wèn)虛擬內(nèi)存,需要建立虛擬內(nèi)存和物理內(nèi)存的映射關(guān)系,而啟用mlock功能會(huì)對(duì)進(jìn)程運(yùn)行中的page fault產(chǎn)生影響,進(jìn)而影響內(nèi)存訪問(wèn)時(shí)間。mlock功能對(duì)內(nèi)存訪問(wèn)的影響如表3所示。

        表3 mlock功能對(duì)內(nèi)存訪問(wèn)的影響

        (1)采用mlock機(jī)制,僅在進(jìn)程虛擬內(nèi)存和物理內(nèi)存建立映射關(guān)系時(shí)產(chǎn)生一次page fault。

        (2)未采用mlock機(jī)制,每當(dāng)訪問(wèn)進(jìn)程中不同的虛擬內(nèi)存單元時(shí),就會(huì)產(chǎn)生一次page fault。

        若進(jìn)程中涉及實(shí)時(shí)處理環(huán)節(jié),應(yīng)在進(jìn)入實(shí)時(shí)處理環(huán)節(jié)前,將進(jìn)程虛擬內(nèi)存鎖定到物理內(nèi)存,否則page fault會(huì)影響實(shí)時(shí)處理。

        在一些實(shí)際應(yīng)用中會(huì)涉及多線程操作,每個(gè)線程均有自己的棧空間,啟用mlock功能會(huì)對(duì)線程??臻g映射物理內(nèi)存帶來(lái)一定的影響,如表4所示。

        表4 mlock功能對(duì)線程映射的影響

        映射物理內(nèi)存時(shí)間開銷off 1MB 低mlock=on|off 線程??臻g映射物理內(nèi)存大小

        假設(shè)線程整個(gè)棧空間大小10MB,其中1MB空間已使用。假設(shè)10MB虛擬內(nèi)存和物理內(nèi)存建立映射關(guān)系耗時(shí)1ms,1MB虛擬內(nèi)存和物理內(nèi)存建立映射關(guān)系耗時(shí)0.1ms。當(dāng)進(jìn)程涉及多線程操作時(shí):

        (1)采用mlock機(jī)制,線程整個(gè)??臻g10MB會(huì)被映射到物理內(nèi)存,若一個(gè)進(jìn)程中有2000個(gè)線程,則線程棧空間和物理內(nèi)存建立映射關(guān)系共耗時(shí)2000ms。

        (2)未采用mlock機(jī)制,線程??臻g已使用的1MB會(huì)被映射到物理內(nèi)存,若一個(gè)進(jìn)程中有2000個(gè)線程,則線程??臻g和物理內(nèi)存建立映射關(guān)系共耗時(shí)200ms。

        若進(jìn)程涉及多線程操作,采用mlock機(jī)制,線程??臻g和物理內(nèi)存建立映射關(guān)系將帶來(lái)額外的時(shí)間開銷。

        4 mlock功能對(duì)業(yè)務(wù)性能的影響

        為了驗(yàn)證mlock功能對(duì)業(yè)務(wù)性能帶來(lái)的影響,按如下兩種應(yīng)用場(chǎng)景分別對(duì)其進(jìn)行性能測(cè)試。

        (1)利用進(jìn)程測(cè)試工具,驗(yàn)證mlock功能是否開啟對(duì)其創(chuàng)建線程性能的影響。測(cè)試結(jié)果如表5所示。

        表5 mlock功能對(duì)創(chuàng)建線程性能影響

        圖3 mlock功能對(duì)創(chuàng)建線程性能影響

        測(cè)試單位為thread/s;

        從表5中可以看出隨著并發(fā)進(jìn)程逐漸增多,使用mlock的MCL_FUTURE特性,會(huì)嚴(yán)重影響進(jìn)程創(chuàng)建線程的性能。圖形效果如圖3所示。

        (2)動(dòng)態(tài)分配內(nèi)存20GB,驗(yàn)證mlock功能是否開啟對(duì)page fault產(chǎn)生的影響。如表6所示。

        表6 mlock功能對(duì)page fault的影響

        從表6中可以看出使用mlock的MCL_FUTURE特性,動(dòng)態(tài)分配內(nèi)存時(shí)會(huì)大幅增加page fault,圖形效果如圖4所示。

        圖4 mlock功能對(duì)page fault影響

        5 結(jié)束語(yǔ)

        基于Linux系統(tǒng)對(duì)mlock實(shí)現(xiàn)原理進(jìn)行了研究,并測(cè)試了mlock功能開啟對(duì)進(jìn)程創(chuàng)建線程和page fault產(chǎn)生的性能影響。從兩個(gè)測(cè)試結(jié)果可以看出,使用mlock的MCL_FUTURE特性來(lái)進(jìn)行內(nèi)存鎖定,當(dāng)進(jìn)程涉及動(dòng)態(tài)內(nèi)存分配時(shí)會(huì)大幅增加page fault,同時(shí)并發(fā)進(jìn)程數(shù)增加會(huì)嚴(yán)重降低進(jìn)程創(chuàng)建線程的性能,這是由mlock實(shí)時(shí)鎖定了物理內(nèi)存造成的。因此可以根據(jù)具體情況和需求來(lái)決定是否需要使用mlock功能。

        猜你喜歡
        進(jìn)程物理功能
        也談詩(shī)的“功能”
        只因是物理
        井岡教育(2022年2期)2022-10-14 03:11:44
        債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
        處處留心皆物理
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        三腳插頭上的物理知識(shí)
        我不是教物理的
        中學(xué)生(2015年2期)2015-03-01 03:43:33
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        辨證施護(hù)在輕度認(rèn)知功能損害中的應(yīng)用
        社會(huì)進(jìn)程中的新聞學(xué)探尋
        真人直播 免费视频| 免费蜜桃视频在线观看| 国产三级韩三级日产三级| 国产丝袜美腿在线播放| 人妻熟女翘屁股中文字幕| 亚洲 日本 欧美 中文幕| 在线成人爽a毛片免费软件| 精品国产av最大网站| 亚洲综合网在线观看首页| 欧美成人精品福利在线视频| 蜜桃视频在线免费观看一区二区| 久久99免费精品国产| 亚洲精品视频1区2区| 免费无码又爽又高潮视频| 人妻 色综合网站| 永久免费av无码网站性色av| 永久无码在线观看| 熟女人妻一区二区中文字幕| 91国产精品自拍在线观看| 无遮掩无码h成人av动漫| 亚洲精品久久久久中文字幕一福利 | 欧美亚洲一区二区三区| a级毛片免费完整视频| 国产美女在线精品免费观看网址 | 亚洲黄片av在线播放| 亚洲香蕉成人av网站在线观看| 中国凸偷窥xxxx自由视频妇科| 亚洲综合欧美日本另类激情| 亚洲国产成人Av毛片大全| 色婷婷一区二区三区四| 一区二区三区激情免费视频| 国产精品无码一区二区在线观一 | 亚洲av永久无码精品漫画| 国语自产偷拍精品视频偷| 91久久精品国产91久久| 国产在线观看免费一级| 女同欲望一区二区三区| 蜜桃av噜噜一区二区三区9| 麻豆一区二区三区蜜桃免费| 国产成人av一区二区三区在线| 精品亚洲国产探花在线播放|