国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種對內(nèi)存中內(nèi)存頁的處理方法及裝置的制造方法

      文檔序號:10488876閱讀:279來源:國知局
      一種對內(nèi)存中內(nèi)存頁的處理方法及裝置的制造方法
      【專利摘要】本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種對內(nèi)存中內(nèi)存頁的處理方法及裝置,用以獲得較高的訪問性能和較大的存儲容量。本發(fā)明提供的對內(nèi)存中內(nèi)存頁的處理方法中,內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁;該處理方法包括:當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將1個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      【專利說明】
      一種對內(nèi)存中內(nèi)存頁的處理方法及裝置
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種對內(nèi)存中內(nèi)存頁的處理方法及裝置。
      【背景技術(shù)】
      [0002]隨著虛擬化技術(shù)的發(fā)展,對內(nèi)存資源等硬件資源的需求越來越高。由于傳統(tǒng)的動態(tài)隨機存儲器(Dynamic Random Access Memory,DRAM)能耗大、容量擴展難度高,新型的能耗低、容量大、具有非易性的存儲器,如相變存儲器(Phase Change Memory,PCM),將有望替代傳統(tǒng)的DRAM存儲器。
      [0003]PCM是一種新一代非揮發(fā)性存儲器,它利用材料的可逆轉(zhuǎn)的相變來存儲信息,可以實現(xiàn)單層單元(Single-Level Cell,SLC)存儲和多層單元(Mult1-Level Ce 11, MLC)存儲;SLC的特點是成本高、容量小、速度快,而MLC的特點是容量大、成本低,但是速度慢。
      [0004]基于SLC和MLC的不同特點,若采用SLC存儲,可以得到較高的訪問性能,但是會限制存儲容量,若采用MLC存儲,可以得到較大的存儲容量,但是訪問性能較低;采用在內(nèi)存中同時設(shè)置SLC和MLC的方式時,也只能簡單地根據(jù)訪問性能或存儲容量的需求,按照預(yù)設(shè)的比例設(shè)置SLC和MLC,無法得到較優(yōu)的訪問性能和較大的存儲容量,也即尚沒有有效的方案能夠兼顧SLC和MLC的優(yōu)勢。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明實施例提供一種對內(nèi)存中內(nèi)存頁的處理方法及裝置,用以兼顧訪問性能和存儲容量,得到較優(yōu)的訪問性能和較大的存儲容量。
      [0006]第一方面,提供一種對內(nèi)存中內(nèi)存頁的處理方法,所述內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);該處理方法包括:
      [0007]當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;
      [0008]將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;
      [0009]釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0010]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。
      [0011 ] 結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。
      [0012]結(jié)合第一方面,或第一方面的第一或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0013]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。
      [0014]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0015]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的空閑的內(nèi)存頁。
      [0016]結(jié)合第一方面,或第一方面的第一?四種可能的實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,所述方法還包括:
      [0017]在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0018]結(jié)合第一方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,將空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;
      [0019]結(jié)合第一方面,或第一方面的第一?六種可能的實現(xiàn)方式中的任意一種,在第七種可能的實現(xiàn)方式中,所述方法還包括:
      [0020]在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0021]結(jié)合第一方面的第七種可能的實現(xiàn)方式,在第八種可能的實現(xiàn)方式中,將不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;
      [0022]結(jié)合第一方面,或第一方面的第一?八種可能的實現(xiàn)方式中的任意一種,在第九種可能的實現(xiàn)方式中,所述方法還包括:
      [0023]針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。
      [0024]結(jié)合第一方面的第九種可能的實現(xiàn)方式,在第十種可能的實現(xiàn)方式中,將活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁,包括:
      [0025]將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0026]第二方面,提供一種對內(nèi)存中內(nèi)存頁的處理裝置,所述內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);該裝置包括:
      [0027]轉(zhuǎn)換模塊,用于當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于基于缺頁概率和訪問性能確定的設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;
      [0028]復(fù)制模塊,用于將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;
      [0029]釋放模塊,用于釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0030]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。
      [0031]結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。
      [0032]結(jié)合第二方面,或第二方面的第一或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述轉(zhuǎn)換模塊還用于,在確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。
      [0033]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述轉(zhuǎn)換模塊還用于,在確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的空閑的內(nèi)存頁。
      [0034]結(jié)合第二方面,或第二方面的第一?四種可能的實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,所述裝置還包括:
      [0035]第一分配模塊,用于在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0036]結(jié)合第二方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述第一分配模塊具體用于:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0037]結(jié)合第二方面,或第二方面的第一?六種可能的實現(xiàn)方式中的任意一種,在第七種可能的實現(xiàn)方式中,所述裝置還包括:
      [0038]第二分配模塊,用于在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0039]結(jié)合第二方面的第七種可能的實現(xiàn)方式,在第八種可能的實現(xiàn)方式中,所述第二分配模塊具體用于,將該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;
      [0040]結(jié)合第二方面,或第二方面的第一?八種可能的實現(xiàn)方式中的任意一種,在第九種可能的實現(xiàn)方式中,所述裝置還包括:
      [0041]第三分配模塊,用于針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。
      [0042]結(jié)合第二方面的第九種可能的實現(xiàn)方式,在第十種可能的實現(xiàn)方式中,所述第三分配模塊具體用于:
      [0043]將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0044]第三方面,提供一種對內(nèi)存中內(nèi)存頁的處理設(shè)備,包括處理器、存儲器和總線,所述存儲器包括內(nèi)存,該內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);所述存儲器存儲執(zhí)行指令,當(dāng)所述設(shè)備運行時,所述處理器與所述存儲器之間通過總線通信,使得所述處理器執(zhí)行如下執(zhí)行指令:
      [0045]當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;
      [0046]將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;
      [0047]釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0048]結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。
      [0049]結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。
      [0050]結(jié)合第三方面,或第三方面的第一或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令中,確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0051]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁;M為正整數(shù)。
      [0052]結(jié)合第三方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令中,確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0053]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的內(nèi)存資源。
      [0054]結(jié)合第三方面,或第三方面的第一?四種可能的實現(xiàn)方式中的任意一種,在第五種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令還包括:
      [0055]在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0056]結(jié)合第三方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令中,將空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0057]結(jié)合第三方面,或第三方面的第一?六種可能的實現(xiàn)方式中的任意一種,在第七種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令還包括:
      [0058]在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0059]結(jié)合第三方面的第七種可能的實現(xiàn)方式,在第八種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令中,將不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0060]結(jié)合第三方面,或第三方面的第一?八種可能的實現(xiàn)方式中的任意一種,在第九種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令還包括:
      [0061]針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。
      [0062]結(jié)合第三方面的第九種可能的實現(xiàn)方式,在第十種可能的實現(xiàn)方式中,所述處理器執(zhí)行的所述執(zhí)行指令中,將活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁,包括:
      [0063]將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0064]在上述方案中,空閑的內(nèi)存頁和活躍的內(nèi)存頁以SLC的形式存在,這些內(nèi)存頁都是在短時間內(nèi)會被訪問的內(nèi)存頁,對這些內(nèi)存頁采用高性能的SLC存儲模式,能夠充分提高訪問性能;同時,為了兼顧存儲容量,當(dāng)VM可用的空閑SLC內(nèi)存頁數(shù)目低于設(shè)定閾值時,將不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為MLC內(nèi)存頁中數(shù)據(jù)的形式進行存儲;由于MLC的存儲容量是SLC存儲容量的2倍,在將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為2個MLC內(nèi)存頁中數(shù)據(jù)的形式進行存儲后,還可以節(jié)省出I個空閑的SLC內(nèi)存頁(其中,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁,將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)移到轉(zhuǎn)換后的2個MLC內(nèi)存頁中,得到2個空閑的SLC內(nèi)存頁,相當(dāng)于節(jié)省出I個空閑的SLC內(nèi)存頁),從而提高了存儲容量,并減少了缺頁錯誤。
      【附圖說明】
      [0065]圖1為本發(fā)明實施例的應(yīng)用環(huán)境示意圖;
      [0066]圖2為本發(fā)明實施例一提供的對內(nèi)存中內(nèi)存頁的處理方法流程圖;
      [0067]圖3為本發(fā)明實施例一進行SLC和MLC轉(zhuǎn)換的示意圖;
      [0068]圖4為本發(fā)明實施例二進行內(nèi)存頁處理的方法流程圖;
      [0069]圖5為米用氣球技術(shù)(balloon technique)來平衡VM之間的內(nèi)存分配的不意圖;
      [0070]圖6為本發(fā)明實施例提供的對內(nèi)存中內(nèi)存頁的處理裝置結(jié)構(gòu)示意圖;
      [0071]圖7為本發(fā)明實施例提供的對內(nèi)存中內(nèi)存頁的處理設(shè)備結(jié)構(gòu)示意圖。
      【具體實施方式】
      [0072]在本發(fā)明實施例中,空閑的內(nèi)存頁和活躍的內(nèi)存頁以SLC的形式存在,這些內(nèi)存頁都是在短時間內(nèi)會被訪問的內(nèi)存頁,對這些內(nèi)存頁采用高性能的SLC存儲模式,能夠充分提高訪問性能;同時,為了兼顧存儲容量,當(dāng)虛擬機(Virtual Machine,VM)可用的空閑SLC內(nèi)存頁數(shù)目低于設(shè)定閾值時,將不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為MLC內(nèi)存頁中數(shù)據(jù)的形式進行存儲;由于MLC的存儲容量是SLC存儲容量的2倍,在將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為2個MLC內(nèi)存頁中數(shù)據(jù)的形式進行存儲后,還可以節(jié)省出I個空閑的SLC內(nèi)存頁(其中,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁,將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)移到轉(zhuǎn)換后的2個MLC內(nèi)存頁中,得到2個空閑的SLC內(nèi)存頁,相當(dāng)于節(jié)省出I個空閑的SLC內(nèi)存頁),從而提高了存儲容量,并減少了缺頁錯誤。
      [0073]如圖1所示,本發(fā)明實施例的應(yīng)用環(huán)境主要包括硬件層、虛擬化管理層和虛擬機層;其中,硬件層包括支持虛擬化的中央處理器(Central Processing Unit,CPU)、基于PCM的主存、基于閃存(Flash)的外存等硬件設(shè)備;虛擬機層負責(zé)運行移動操作系統(tǒng);虛擬化管理層主要負責(zé)虛擬化內(nèi)存調(diào)度、輸入輸出(Input/Output,I/O)請求調(diào)度、CPU任務(wù)調(diào)度等協(xié)調(diào)工作,本發(fā)明實施例對虛擬化管理層中的內(nèi)存調(diào)度算法進行了改進,在內(nèi)存調(diào)度中,利用內(nèi)存頁的活躍狀態(tài),調(diào)節(jié)SLC內(nèi)存頁與MLC內(nèi)存頁的分配,將空閑的內(nèi)存頁和活躍的內(nèi)存頁分配為SLC存儲方式,在虛擬機VM的空閑SLC內(nèi)存頁小于設(shè)定閾值時,啟動SLC內(nèi)存頁與MLC內(nèi)存頁之間的轉(zhuǎn)換,將不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為MLC內(nèi)存頁數(shù)據(jù)的形式存儲,以節(jié)省出空閑的SLC內(nèi)存頁存儲新的數(shù)據(jù);如圖1所示,本發(fā)明實施例在虛擬化管理層(Hypervisor)加入了基于應(yīng)用的 SLC/MLC 分配器(ASPA Page Allocator)、SLC/MLC 地址轉(zhuǎn)換表(在進行SLC和MLC之間的轉(zhuǎn)換時,由于物理地址空間被改變,需要采用SLC/MLC地址轉(zhuǎn)換表記錄轉(zhuǎn)換關(guān)系)、多虛擬機氣球膨脹(Ballooning for Mutiple VMs)以及SLC/MLC轉(zhuǎn)換(詳見下述實施例一和二的描述)的功能。
      [0074]下面結(jié)合說明書附圖對本發(fā)明實施例作進一步詳細描述。
      [0075]實施例一
      [0076]在本實施例中,內(nèi)存中的內(nèi)存頁包括空閑的SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁,其中,空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),而不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);
      [0077]這里,設(shè)定時間長度是基于內(nèi)存使用情況(包括內(nèi)存訪問頻率和內(nèi)存占用率)確定的,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,設(shè)置的所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,設(shè)置的所述設(shè)定時間長度越短。
      [0078]針對上述不同類型的內(nèi)存頁,在具體實施中,需要基于內(nèi)存頁的訪問情況,實時進行不同內(nèi)存頁類型之間的轉(zhuǎn)換,具體過程可以是:在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁;在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁;針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。在具體實施中,可以采用內(nèi)存頁鏈表的形式分別存儲不同類型的內(nèi)存頁的地址(詳見后續(xù)實施例二)的描述。
      [0079]在此基礎(chǔ)上,可以執(zhí)行圖2所示處理流程,包括:
      [0080]S201:當(dāng)確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁。
      [0081]這里,設(shè)定閾值是基于缺頁概率和訪問性能確定的;當(dāng)所述設(shè)定閾值越小時,產(chǎn)生缺頁的概率越大、內(nèi)存訪問性能越高(因為轉(zhuǎn)換后的MLC內(nèi)存頁較少),當(dāng)所述設(shè)定閾值越大時,產(chǎn)生缺頁的概率越小、內(nèi)存訪問性能越低(因為轉(zhuǎn)換后的MLC內(nèi)存頁較多)。但缺頁概率并不是隨設(shè)定閾值的增加呈線性增加,相應(yīng)地,訪問性能也不是隨設(shè)定閾值的增加呈線性減小,因此,在具體實施中可以通過試驗測試得到一個缺頁概率較小、訪問性能又較高的值。
      [0082]在具體實施中,為每個VM申請一定大小的內(nèi)存,在將數(shù)據(jù)寫入內(nèi)存中空閑的SLC內(nèi)存頁后,該內(nèi)存頁變?yōu)榛钴S的SLC內(nèi)存頁,可能會被頻繁訪問(讀或者寫),然后逐步進入不活躍期,幾乎不被訪問,即變?yōu)椴换钴S的SLC內(nèi)存頁。本發(fā)明實施例中,空閑的SLC內(nèi)存頁不斷被消耗用于存儲新的數(shù)據(jù),在VM業(yè)務(wù)繁忙的情況下,內(nèi)存資源得不到及時釋放,將會導(dǎo)致空閑的SLC內(nèi)存頁越來越少。當(dāng)監(jiān)測到空閑的SLC內(nèi)存頁小于設(shè)定閾值后,將啟動SLC內(nèi)存頁與MLC內(nèi)存頁之間的轉(zhuǎn)換。
      [0083]S202:將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中。
      [0084]S203:釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0085]如圖3所示,為本發(fā)明實施例一進行SLC和MLC轉(zhuǎn)換的示意圖。首先,如S201所述,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁(此時為空閑的MLC內(nèi)存頁),也即每I個空閑的SLC內(nèi)存頁可以被轉(zhuǎn)換為2個MLC內(nèi)存頁(這是由SLC和MLC的物理屬性決定的),存儲空間提高I倍。
      [0086]接著,如S202所述,將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中(空閑的MLC內(nèi)存頁此時變?yōu)椴换钴S的MLC內(nèi)存頁),這里,不管是SLC內(nèi)存頁還是MLC內(nèi)存頁,每個內(nèi)存頁中能夠存儲的數(shù)據(jù)量是相同的,因此,每2個SLC內(nèi)存頁中的數(shù)據(jù)同樣需要占用2個MLC內(nèi)存頁。
      [0087]最后,如下述S203所述,釋放2個不活躍的SLC內(nèi)存頁中的存儲空間,使之轉(zhuǎn)換為2個空閑的SLC內(nèi)存頁;此時,減去初始轉(zhuǎn)換為2個MLC內(nèi)存頁的I個空閑的SLC內(nèi)存頁,相當(dāng)于節(jié)省出I個空閑的SLC內(nèi)存頁,這I個空閑的SLC內(nèi)存頁可以繼續(xù)被分配用于存儲新的數(shù)據(jù)。
      [0088]采用上述實施例一,可以將在短時間內(nèi)會被訪問的空閑的內(nèi)存頁和會被頻繁訪問的活躍的內(nèi)存頁規(guī)劃為高性能的SLC存儲模式,以充分提高內(nèi)存訪問性能;并且,當(dāng)VM可用的空閑SLC內(nèi)存頁低于設(shè)定閾值時,將不活躍的SLC內(nèi)存頁中的數(shù)據(jù)轉(zhuǎn)換為MLC內(nèi)存頁中數(shù)據(jù)的形式進行存儲,還可以節(jié)省出空閑的內(nèi)存空間,從而提高了存儲容量,并減少了缺頁錯誤。
      [0089]在具體實施中,當(dāng)系統(tǒng)工作負載較重,尤其在超負荷工作時,有可能無法找到至少2個不活躍的SLC內(nèi)存頁,這時可以直接將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,將這2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。這種轉(zhuǎn)換方式可能會導(dǎo)致缺頁錯誤,但是由于MLC內(nèi)存頁中的數(shù)據(jù)實際都是不活躍的SLC中的數(shù)據(jù),不會被頻繁訪問,對系統(tǒng)帶來的額外開銷較小。當(dāng)系統(tǒng)工作負載更重,甚至找不到可以使用的MLC內(nèi)存頁時,意味著幾乎所有的內(nèi)存頁都被采用SLC存儲模式使用,并被活躍地訪問,這時可以啟用虛擬平臺的超級管理程序來平衡不同VM之間的內(nèi)存分配。詳見下述實施例二的描述。
      [0090]實施例二
      [0091]如圖4所示,為本發(fā)明實施例二進行內(nèi)存頁處理的方法流程圖,包括:
      [0092]S401:建立不同的內(nèi)存頁鏈表來記錄內(nèi)存頁的活躍狀態(tài):為每個VM建立空閑SLC內(nèi)存頁鏈表、活躍SLC內(nèi)存頁鏈表、不活躍SLC內(nèi)存頁鏈表和MLC內(nèi)存頁鏈表。
      [0093]這里,空閑SLC內(nèi)存頁鏈表用于存儲空閑的SLC內(nèi)存頁的地址,活躍SLC內(nèi)存頁鏈表用于存儲活躍的內(nèi)存頁的地址、不活躍SLC內(nèi)存頁鏈表用于存儲不活躍的內(nèi)存頁的地址,MLC內(nèi)存頁鏈表用于存儲MLC內(nèi)存頁的地址,通過這些內(nèi)存頁鏈表,來記錄內(nèi)存頁的活躍狀態(tài)。
      [0094]在具體實施中,空閑的SLC內(nèi)存頁為存儲數(shù)據(jù)為空的內(nèi)存頁,活躍的SLC內(nèi)存頁用于存儲最近被頻繁訪問的數(shù)據(jù),不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁用于存儲設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù)。在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0095]S402:當(dāng)任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,調(diào)節(jié)為該VM分配的內(nèi)存中MLC和SLC的分配比例:若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目大于或等于2,則將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁,將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中,釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁;若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。
      [0096]S403:平衡VM之間的內(nèi)存分配:若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的內(nèi)存資源。
      [0097]在移動虛擬化平臺上,基于不同應(yīng)用的需求,運行不同應(yīng)用的VM之間會存在不同的內(nèi)存請求。當(dāng)一個VM的內(nèi)存頁幾乎都處于活躍狀態(tài)時,其它VM可能還有大量的空閑的內(nèi)存頁。通過調(diào)用虛擬平臺的超級管理程序,從擁有大量空閑的內(nèi)存頁(比如空閑內(nèi)存頁高于預(yù)設(shè)值)的VM處,收回部分內(nèi)存,然后分配給當(dāng)前空閑的內(nèi)存頁較少的VM。
      [0098]如圖5所示,采用氣球技術(shù)(balloon technique)來平衡VM之間的內(nèi)存分配。當(dāng)超級管理程序收回為VM分配的內(nèi)存時,首先膨脹VM的氣球驅(qū)動程序,通過氣球驅(qū)動,能夠釋放掉空閑的SLC內(nèi)存頁,并分配給內(nèi)存緊缺的VM。
      [0099]基于上述描述可知,本發(fā)明方案具有以下有益效果:
      [0100]I)充分利用了 SLC高性能的特性,減少了內(nèi)存訪問延遲:本發(fā)明實施例為新的內(nèi)存頁請求和寫頻繁的內(nèi)存頁,分配高性能的SLC內(nèi)存,從而提高了訪問性能。
      [0101]2)充分利用了 MLC大容量的特性,擴展了內(nèi)存的容量,減少了缺頁錯誤:本發(fā)明實施例在內(nèi)存不足的情況下,將不活躍的SLC內(nèi)存頁轉(zhuǎn)為大容量的MLC頁,從而增加了內(nèi)存容量,減少了缺頁錯誤。
      [0102]3)提高了系統(tǒng)整體性能:系統(tǒng)的整體性能取決于SLC訪問次數(shù)、MLC訪問次數(shù)、缺頁錯誤次數(shù)三個因素。本發(fā)明實施例將頻繁訪問的內(nèi)存頁規(guī)劃為低延遲的SLC內(nèi)存頁,將訪問較少的內(nèi)存頁規(guī)劃為大容量的MLC內(nèi)存頁,從而一方面減少了內(nèi)存頁訪問的延遲性;另一方面擴展了內(nèi)存容量,減少了缺頁錯誤,從而提高了系統(tǒng)的整體性能。
      [0103]4)多個虛擬機VM的整體性能提高:本發(fā)明實施例中,當(dāng)一個VM可用空閑內(nèi)存不足時,調(diào)用超級管理程序收回其它VM中空閑的內(nèi)存頁,分配給內(nèi)存缺乏的VM,從而提高了多個VM的整體性能。
      [0104]5)存儲和性能開銷低:本發(fā)明實施例的系統(tǒng)開銷主要包括SLC/MLC地址轉(zhuǎn)換表上的空間開銷和在SLC/MLC轉(zhuǎn)換過程中的運行開銷,而這些開銷都是很小的;統(tǒng)計結(jié)果表明地址轉(zhuǎn)換表只會占用約0.2%的內(nèi)存大小,而SLC/MLC的轉(zhuǎn)換過程只涉及到內(nèi)存到內(nèi)存的操作,系統(tǒng)開銷很小。
      [0105]基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種與對內(nèi)存中內(nèi)存頁的處理方法對應(yīng)的對內(nèi)存中內(nèi)存頁的處理裝置,由于該裝置解決問題的原理與本發(fā)明實施例對內(nèi)存中內(nèi)存頁的處理方法相似,因此該裝置的實施可以參見方法的實施,重復(fù)之處不再贅述。
      [0106]如圖6所示,為本發(fā)明實施例提供的對內(nèi)存中內(nèi)存頁的處理裝置結(jié)構(gòu)示意圖,所述內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);該裝置包括:
      [0107]轉(zhuǎn)換模塊61,用于當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;
      [0108]復(fù)制模塊62,用于將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;
      [0109]釋放模塊63,用于釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0110]可選地,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。
      [0111]可選地,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。
      [0112]可選地,所述轉(zhuǎn)換模塊61還用于,在確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。
      [0113]可選地,所述轉(zhuǎn)換模塊61還用于,在確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的空閑的內(nèi)存頁。
      [0114]可選地,所述裝置還包括:
      [0115]第一分配模塊64,用于在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0116]可選地,所述第一分配模塊64具體用于:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0117]可選地,所述裝置還包括:
      [0118]第二分配模塊65,用于在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0119]可選地,所述第二分配模塊65具體用于,將該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0120]可選地,所述裝置還包括:
      [0121]第三分配模塊66,用于針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。
      [0122]可選地,所述第三分配模塊66具體用于:
      [0123]將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0124]如圖7所示,為本發(fā)明實施例提供的對內(nèi)存中內(nèi)存頁的處理設(shè)備70結(jié)構(gòu)示意圖,包括處理器71、存儲器72和總線73,所述存儲器72包括內(nèi)存72a,該內(nèi)存72a中的內(nèi)存頁包括空閑的SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);所述存儲器72存儲執(zhí)行指令,當(dāng)所述處理設(shè)備70運行時,所述處理器71與所述存儲器72之間通過總線73通信,使得所述處理器71執(zhí)行如下執(zhí)行指令:
      [0125]當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁;
      [0126]將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中;
      [0127]釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。
      [0128]可選地,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。
      [0129]可選地,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。
      [0130]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令中,確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0131]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁;M為正整數(shù)。
      [0132]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令中,確定任一 VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括:
      [0133]若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的內(nèi)存資源。
      [0134]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令還包括:
      [0135]在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0136]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令中,將空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。
      [0137]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令還包括:
      [0138]在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。
      [0139]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令中,將不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中;
      [0140]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令還包括:
      [0141]針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。
      [0142]可選地,所述處理器71執(zhí)行的所述執(zhí)行指令中,將活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁,包括:
      [0143]將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      [0144]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
      [0145]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
      [0146]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
      [0147]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
      [0148]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
      [0149]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
      【主權(quán)項】
      1.一種對內(nèi)存中內(nèi)存頁的處理方法,其特征在于,所述內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);該處理方法包括: 當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁; 將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中; 釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。3.如權(quán)利要求1或2所述的方法,其特征在于,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。4.如權(quán)利要求1?3任一所述的方法,其特征在于,所述確定任一VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括: 若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。5.如權(quán)利要求4所述的方法,其特征在于,所述確定任一VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,還包括: 若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一VM獲取其它VM的空閑的內(nèi)存頁。6.如權(quán)利要求1?5任一所述的方法,其特征在于,所述方法還包括: 在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。7.如權(quán)利要求6所述的方法,其特征在于,將空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。8.如權(quán)利要求1?7任一所述的方法,其特征在于,所述方法還包括: 在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。9.如權(quán)利要求8所述的方法,其特征在于,將不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁,包括:該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。10.如權(quán)利要求1?9任一所述的方法,其特征在于,所述方法還包括: 針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。11.如權(quán)利要求10所述的方法,其特征在于,將活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁,包括: 將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。12.—種對內(nèi)存中內(nèi)存頁的處理裝置,其特征在于,所述內(nèi)存中的內(nèi)存頁包括空閑的單層單元SLC內(nèi)存頁、活躍的SLC內(nèi)存頁、不活躍的SLC內(nèi)存頁和多層單元MLC內(nèi)存頁,所述空閑的SLC內(nèi)存頁中的數(shù)據(jù)為空,所述活躍的SLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)被訪問過的數(shù)據(jù),所述不活躍的SLC內(nèi)存頁和MLC內(nèi)存頁中所存儲的數(shù)據(jù)是在設(shè)定時間長度內(nèi)未被訪問的數(shù)據(jù);該裝置包括: 轉(zhuǎn)換模塊,用于當(dāng)確定任一虛擬機VM的空閑單層單元SLC內(nèi)存頁數(shù)目小于設(shè)定閾值時,將I個空閑的SLC內(nèi)存頁轉(zhuǎn)換為2個MLC內(nèi)存頁; 復(fù)制模塊,用于將2個不活躍的SLC內(nèi)存頁中的數(shù)據(jù)復(fù)制到轉(zhuǎn)換后的所述2個MLC內(nèi)存頁中; 釋放模塊,用于釋放所述2個不活躍的SLC內(nèi)存頁中的存儲空間,得到2個空閑的SLC內(nèi)存頁。13.如權(quán)利要求12所述的裝置,其特征在于,當(dāng)內(nèi)存訪問頻率越高或內(nèi)存占用率越高時,所述設(shè)定時間長度越短;或者,當(dāng)內(nèi)存訪問頻率越高、且內(nèi)存占用率越高時,所述設(shè)定時間長度越短。14.如權(quán)利要求12或13所述的方法,其特征在于,當(dāng)所述設(shè)定閾值越小時,內(nèi)存訪問性能越高、產(chǎn)生缺頁的概率越大。15.如權(quán)利要求14所述的裝置,其特征在于,所述轉(zhuǎn)換模塊還用于,在確定任一VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2,則將2個MLC內(nèi)存頁中的數(shù)據(jù)寫回外存,并將所述2個MLC內(nèi)存頁轉(zhuǎn)換為I個空閑的SLC內(nèi)存頁。16.如權(quán)利要求15所述的裝置,其特征在于,所述轉(zhuǎn)換模塊還用于,在確定任一VM的空閑SLC內(nèi)存頁數(shù)目小于設(shè)定閾值之后,若當(dāng)前不活躍的SLC內(nèi)存頁數(shù)目小于2、且當(dāng)前MLC內(nèi)存頁數(shù)目小于2,則為所述任一 VM獲取其它VM的空閑的內(nèi)存頁。17.如權(quán)利要求12?16任一所述的裝置,其特征在于,所述裝置還包括: 第一分配模塊,用于在接收到內(nèi)存分配請求后,為該內(nèi)存分配請求分配空閑的SLC內(nèi)存頁,并將該空閑的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。18.如權(quán)利要求17所述的裝置,其特征在于,所述第一分配模塊具體用于:將該空閑的SLC內(nèi)存頁的地址從建立的空閑SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。19.如權(quán)利要求12?18任一所述的裝置,其特征在于,所述裝置還包括: 第二分配模塊,用于在接收到針對不活躍的SLC內(nèi)存頁的訪問請求后,將該不活躍的SLC內(nèi)存頁重新標識為活躍的SLC內(nèi)存頁。20.如權(quán)利要求19所述的裝置,其特征在于,所述第二分配模塊具體用于,將該不活躍的SLC內(nèi)存頁的地址從建立的不活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的活躍SLC內(nèi)存頁鏈表中。21.如權(quán)利要求12?20任一所述的裝置,其特征在于,所述裝置還包括: 第三分配模塊,用于針對活躍的SLC內(nèi)存頁,若在設(shè)定時間長度內(nèi)沒有接收到針對該內(nèi)存頁的訪問請求,則將該活躍的SLC內(nèi)存頁重新標識為不活躍的SLC內(nèi)存頁。22.如權(quán)利要求21所述的裝置,其特征在于,所述第三分配模塊具體用于: 將該活躍的SLC內(nèi)存頁的地址從建立的活躍SLC內(nèi)存頁鏈表中轉(zhuǎn)移到建立的不活躍SLC內(nèi)存頁鏈表中。
      【文檔編號】G06F3/06GK105843748SQ201510021433
      【公開日】2016年8月10日
      【申請日】2015年1月15日
      【發(fā)明人】劉鐸, 邵子立, 龍林波
      【申請人】華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1