国产精品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)存耗盡處理流程卸載到用戶空間的方法和裝置的制造方法

      文檔序號(hào):10654335閱讀:823來(lái)源:國(guó)知局
      將內(nèi)存耗盡處理流程卸載到用戶空間的方法和裝置的制造方法
      【專利摘要】本申請(qǐng)公開(kāi)了將內(nèi)存耗盡處理流程卸載到用戶空間的方法和裝置。所述方法的一【具體實(shí)施方式】包括:當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)所述內(nèi)存頁(yè)面獲取所述內(nèi)存耗盡事件的相關(guān)信息;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。該實(shí)施方式實(shí)現(xiàn)了將內(nèi)核態(tài)的內(nèi)存耗盡處理卸載到用戶態(tài)執(zhí)行,將整個(gè)內(nèi)存耗盡處理過(guò)程交由一個(gè)用戶態(tài)進(jìn)程來(lái)完成,降低內(nèi)存耗盡處理執(zhí)行的復(fù)雜度,也易于內(nèi)存耗盡處理策略的調(diào)整及業(yè)務(wù)的升級(jí)替換。
      【專利說(shuō)明】
      將內(nèi)存耗盡處理流程卸載到用戶空間的方法和裝置
      技術(shù)領(lǐng)域
      [0001]本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及計(jì)算機(jī)操作系統(tǒng)技術(shù)領(lǐng)域,尤其涉及將內(nèi)存耗盡處理流程卸載到用戶空間的方法和裝置。
      【背景技術(shù)】
      [0002]計(jì)算機(jī)在大壓力高負(fù)載的情況下,為提高機(jī)器的資源利用率,會(huì)經(jīng)常出現(xiàn)將機(jī)器的物理內(nèi)存耗盡的情況,進(jìn)而頻繁觸發(fā)00M(out of memory,內(nèi)存耗盡)處理。內(nèi)核的OOM處理成為降低系統(tǒng)內(nèi)存壓力的最后一道屏障。標(biāo)準(zhǔn)內(nèi)核的OOM處理的執(zhí)行也因使用情景的變化而變的復(fù)雜,大壓力及負(fù)載下在內(nèi)核態(tài)執(zhí)行過(guò)程也顯得過(guò)于冗長(zhǎng),且長(zhǎng)時(shí)間在操作系統(tǒng)內(nèi)核態(tài)處理易引起系統(tǒng)死鎖而導(dǎo)致系統(tǒng)宕機(jī)等問(wèn)題,降低了服務(wù)的穩(wěn)定性及可用性。
      [0003]另一方面,隨著使用場(chǎng)景的變化,業(yè)務(wù)層面對(duì)OOM處理的策略也會(huì)有一些更多的需求,當(dāng)內(nèi)存超限后,提出了一些新的挑選結(jié)束進(jìn)程的策略,比如優(yōu)先結(jié)束低優(yōu)先級(jí)類型的作業(yè)等。這些策略變更會(huì)使OOM處理邏輯更加的復(fù)雜,OOM處理過(guò)程越發(fā)的耗時(shí),并且在內(nèi)核中實(shí)現(xiàn)這些策略給業(yè)務(wù)的升級(jí)和部署也帶來(lái)了一定的困難。

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

      [0004]本申請(qǐng)的目的在于提出一種將內(nèi)存耗盡處理流程卸載到用戶空間的方法和裝置,來(lái)解決以上【背景技術(shù)】部分提到的技術(shù)問(wèn)題。
      [0005]第一方面,本申請(qǐng)?zhí)峁┝艘环N將內(nèi)存耗盡處理流程卸載到用戶空間的方法,所述方法包括:當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)所述內(nèi)存頁(yè)面獲取所述內(nèi)存耗盡事件的相關(guān)信息;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。
      [0006]在一些實(shí)施例中,所述方法還包括:將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將所述觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上;在內(nèi)存耗盡事件處理完成后喚醒所述等待隊(duì)列上的所述觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0007]在一些實(shí)施例中,所述方法還包括:在將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面之后通知所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程。
      [0008]在一些實(shí)施例中,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件,包括:所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程ig號(hào)。
      [0009]在一些實(shí)施例中,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。
      [0010]在一些實(shí)施例中,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件還包括:所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向所述內(nèi)核空間發(fā)送內(nèi)存耗盡事件處理完成的通知。
      [0011]在一些實(shí)施例中,所述方法還包括:對(duì)所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)。
      [0012]第二方面,本申請(qǐng)?zhí)峁┝艘环N將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述裝置包括:內(nèi)存耗盡內(nèi)核模塊,配置用于當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑;存儲(chǔ)模塊,配置用于存儲(chǔ)所述內(nèi)存耗盡事件的相關(guān)信息;內(nèi)存耗盡服務(wù)模塊,配置用于通過(guò)所述存儲(chǔ)模塊獲取所述內(nèi)存耗盡事件的相關(guān)信息,還配置用于利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。
      [0013]在一些實(shí)施例中,所述裝置還包括:暫停進(jìn)程模塊,配置用于將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將所述觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上;在內(nèi)存耗盡事件處理完成后喚醒所述等待隊(duì)列上的所述觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0014]在一些實(shí)施例中,所述內(nèi)存耗盡內(nèi)核模塊還配置用于:在將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊之后通知所述內(nèi)存耗盡服務(wù)模塊。
      [0015]在一些實(shí)施例中,所述內(nèi)存耗盡服務(wù)模塊還配置用于:所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程信號(hào)。
      [0016]在一些實(shí)施例中,所述內(nèi)存耗盡服務(wù)模塊還配置用于不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。
      [0017]在一些實(shí)施例中,所述內(nèi)存耗盡服務(wù)模塊還配置用于向所述內(nèi)存耗盡內(nèi)核模塊發(fā)送內(nèi)存耗盡事件處理完成的通知。
      [0018]在一些實(shí)施例中,所述裝置還包括:監(jiān)控模塊,配置用于對(duì)所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)所述內(nèi)存耗盡內(nèi)核模塊。
      [0019]本申請(qǐng)?zhí)峁┑膶?nèi)存耗盡處理流程卸載到用戶空間的方法和裝置,通過(guò)內(nèi)核將OOM事件相關(guān)信息寫(xiě)入內(nèi)核空間與用戶空間共享的內(nèi)存頁(yè)面,用戶空間讀取所述寫(xiě)入的OOM事件相關(guān)信息后進(jìn)行OOM處理,將內(nèi)核態(tài)的OOM機(jī)制卸載到用戶態(tài)執(zhí)行,將整個(gè)OOM處理過(guò)程交由一個(gè)用戶態(tài)進(jìn)程來(lái)完成,降低OOM執(zhí)行的復(fù)雜度,也易于OOM策略的調(diào)整及業(yè)務(wù)的升級(jí)替換。
      【附圖說(shuō)明】
      [0020]通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
      [0021]圖1是本申請(qǐng)可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
      [0022]圖2是根據(jù)本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的一個(gè)實(shí)施例的流程圖;
      [0023]圖3是根據(jù)本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的一個(gè)應(yīng)用場(chǎng)景的不意圖;
      [0024]圖4是根據(jù)本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的又一個(gè)實(shí)施例的流程圖;
      [0025]圖5是根據(jù)本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
      [0026]圖6是適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0027]下面結(jié)合附圖和實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對(duì)該發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
      [0028]需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)。
      [0029]圖1示出了可以應(yīng)用本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的方法或?qū)?nèi)存耗盡處理流程卸載到用戶空間的裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
      [0030]如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103,網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無(wú)線通信鏈路或者光纖電纜等等。
      [0031]用戶可以使用終端設(shè)備101、102、103通過(guò)網(wǎng)絡(luò)104與服務(wù)器105交互,以接收或發(fā)送消息等。終端設(shè)備101、102、103上可以安裝有各種通訊客戶端應(yīng)用,例如網(wǎng)頁(yè)瀏覽器應(yīng)用、購(gòu)物類應(yīng)用、搜索類應(yīng)用、即時(shí)通信工具、郵箱客戶端、社交平臺(tái)軟件等。
      [0032]終端設(shè)備101、102、103可以是具有操作系統(tǒng)的各種電子設(shè)備。包括但不限于智能手機(jī)、平板電腦、電子書(shū)閱讀器、MP3播放器(Moving Picture Experts Group Aud1 LayerIII,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)、MP4(Moving Picture Experts Group Aud1Layer IV,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面4)播放器、膝上型便攜計(jì)算機(jī)和臺(tái)式計(jì)算機(jī)等等。
      [0033]服務(wù)器105可以是具有Wind0W、LinUX等操作系統(tǒng)的服務(wù)器。
      [0034]需要說(shuō)明的是,本申請(qǐng)實(shí)施例所提供的將內(nèi)存耗盡處理流程卸載到用戶空間的方法一般由服務(wù)器105或終端設(shè)備101、102、103執(zhí)行,相應(yīng)地,將內(nèi)存耗盡處理流程卸載到用戶空間的裝置一般設(shè)置于服務(wù)器105中或終端設(shè)備101、102、103中。
      [0035]應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目?jī)H僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
      [0036]繼續(xù)參考圖2,示出了示出了根據(jù)本申請(qǐng)的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的一個(gè)實(shí)施例的流程200。所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,包括以下步驟:
      [0037]步驟201,將內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面。
      [0038]在本實(shí)施例中,將內(nèi)存耗盡處理流程卸載到用戶空間的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器或終端)可以在內(nèi)核發(fā)生內(nèi)存耗盡時(shí)將內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面(mmap)。其中,相關(guān)信息包括:觸發(fā)OOM的進(jìn)程的身份標(biāo)識(shí)PID及觸發(fā)OOM的進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)(memory cgroup)的路徑。
      [0039]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,在將內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面之后通知用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程。
      [0040]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,在內(nèi)存緊張的情況下,為了保證用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程可以順利申請(qǐng)到內(nèi)存完成計(jì)算任務(wù),在內(nèi)存耗盡服務(wù)進(jìn)程創(chuàng)建時(shí),將為其附加TIF_MEMDIE標(biāo)志,確保其可以使用系統(tǒng)為內(nèi)核保留的位于水位線以下的內(nèi)存。
      [0041]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,當(dāng)用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程出現(xiàn)問(wèn)題時(shí),內(nèi)存耗盡服務(wù)將自動(dòng)進(jìn)入內(nèi)核原有的標(biāo)準(zhǔn)內(nèi)存耗盡處理過(guò)程。
      [0042]步驟202,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)內(nèi)存頁(yè)面獲取內(nèi)存耗盡事件的相關(guān)
      ?目息O
      [0043]在本實(shí)施例中,在內(nèi)核將內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面之后,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程讀取該信息。
      [0044]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程在接收到內(nèi)核發(fā)送的內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入完成的通知后再讀取該信息。
      [0045]步驟203,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件。
      [0046]在本實(shí)施例中,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件,結(jié)束一些進(jìn)程以釋放內(nèi)存空間。
      [0047]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程信號(hào)。
      [0048]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。由于內(nèi)存耗盡服務(wù)進(jìn)程本身作為內(nèi)核功能的一個(gè)卸載,要求內(nèi)存耗盡服務(wù)進(jìn)程在系統(tǒng)運(yùn)行期間一直存在,由此在內(nèi)存耗盡服務(wù)進(jìn)程啟動(dòng)時(shí)由內(nèi)核清空進(jìn)程的信號(hào)處理,并置位SIGNAL_UNKILLABLE標(biāo)志,以使內(nèi)存耗盡服務(wù)進(jìn)程不再響應(yīng)用戶態(tài)發(fā)送的結(jié)束信號(hào),避免內(nèi)存耗盡服務(wù)進(jìn)程被人為的誤殺掉。
      [0049]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向內(nèi)核空間發(fā)送內(nèi)存耗盡事件處理完成的通知。內(nèi)存耗盡內(nèi)核模塊接收到來(lái)自用戶空間的通知后,喚醒那些等待分配內(nèi)存的任務(wù)。
      [0050]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,對(duì)用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)。例如,基于內(nèi)核Utrace框架實(shí)現(xiàn)對(duì)用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程的監(jiān)控。當(dāng)用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程異常退出時(shí),在進(jìn)程退出前會(huì)主動(dòng)將進(jìn)程的退出事件上報(bào)至監(jiān)控模塊,由此可將當(dāng)前內(nèi)存耗盡服務(wù)進(jìn)程正在處理但未處理完的內(nèi)存耗盡事件中的進(jìn)程喚醒,以使其再次嘗試申請(qǐng)內(nèi)存,如再次失敗的話會(huì)由標(biāo)準(zhǔn)內(nèi)核中的內(nèi)存耗盡機(jī)制負(fù)責(zé)處理。
      [0051]繼續(xù)參見(jiàn)圖3,圖3是根據(jù)本實(shí)施例的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的應(yīng)用場(chǎng)景的一個(gè)示意圖。在圖3的應(yīng)用場(chǎng)景中,事件處理流程如下所示:
      [0052](I)當(dāng)發(fā)生內(nèi)存耗盡事件301時(shí),在內(nèi)核中觸發(fā)內(nèi)存耗盡事件的路徑(典型的路包括:在memory cgroup申請(qǐng)內(nèi)存的路徑和系統(tǒng)缺頁(yè)異常處理函數(shù)中)上的代碼首先將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并主動(dòng)觸發(fā)一次調(diào)度,以使進(jìn)程讓出CPU,并將其掛到等待隊(duì)列302上,然后將內(nèi)存耗盡事件通過(guò)eventfd發(fā)送給內(nèi)存耗盡內(nèi)核模塊303;
      [0053](2)內(nèi)存耗盡內(nèi)核模塊303會(huì)將內(nèi)存耗盡事件的相關(guān)信息,包括觸發(fā)內(nèi)存耗盡的進(jìn)程PID及進(jìn)程所在的memory cgroup路徑寫(xiě)入一個(gè)用戶態(tài)與內(nèi)核態(tài)共享的mmap內(nèi)存頁(yè)面304;
      [0054](3)通過(guò)eventfd方式喚醒并通知用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程305;
      [0055](4)用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程305由mmap內(nèi)存頁(yè)面304獲取內(nèi)存耗盡事件的相關(guān)信息,包括觸發(fā)內(nèi)存耗盡的進(jìn)程PID及進(jìn)程所在的memory cgroup路徑;
      [0056](5)內(nèi)存耗盡服務(wù)進(jìn)程305遍歷并為各個(gè)進(jìn)程306打分,并基于策略選定將被結(jié)束的進(jìn)程;
      [0057](6)內(nèi)存耗盡服務(wù)進(jìn)程305向選定的進(jìn)程發(fā)送SIGKILL信號(hào);
      [0058](7)內(nèi)存耗盡服務(wù)進(jìn)程305向內(nèi)存耗盡內(nèi)核模塊303發(fā)送完成內(nèi)存耗盡事件處理完成通知;當(dāng)內(nèi)存耗盡服務(wù)進(jìn)程305異常退出時(shí),在進(jìn)程退出前會(huì)主動(dòng)將進(jìn)程的退出事件上報(bào)至監(jiān)控模塊307,由此可將當(dāng)前內(nèi)存耗盡進(jìn)程305正在處理但未處理完的內(nèi)存耗盡事件中的進(jìn)程喚醒,以使其再次嘗試申請(qǐng)內(nèi)存,如再次失敗的話會(huì)由標(biāo)準(zhǔn)內(nèi)核中的內(nèi)存耗盡機(jī)制負(fù)責(zé)處理。
      [0059](8)內(nèi)存耗盡內(nèi)核模塊303喚醒等待隊(duì)列302上的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0060]本申請(qǐng)的上述實(shí)施例提供的方法通過(guò)將內(nèi)存耗盡處理流程卸載到用戶空間,通過(guò)eventfd的方式通知內(nèi)存耗盡內(nèi)核模塊,而不是直接調(diào)用內(nèi)存耗盡內(nèi)核模塊中的函數(shù),從而達(dá)到解耦的目的,內(nèi)存耗盡內(nèi)核模塊可以順利的在系統(tǒng)運(yùn)行時(shí)進(jìn)行加載和卸載,因此降低了內(nèi)存耗盡處理邏輯的復(fù)雜度,減少內(nèi)存耗盡處理過(guò)程的耗時(shí),并且使業(yè)務(wù)的升級(jí)和部署更容易。
      [0061]進(jìn)一步參考圖4,其示出了將內(nèi)存耗盡處理流程卸載到用戶空間的方法的又一個(gè)實(shí)施例的流程400。該將內(nèi)存耗盡處理流程卸載到用戶空間的方法的流程400,包括以下步驟:
      [0062]步驟401,將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上。
      [0063]在本實(shí)施例中,將內(nèi)存耗盡處理流程卸載到用戶空間的方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器或終端)可以在發(fā)生內(nèi)存耗盡事件時(shí),在內(nèi)核中觸發(fā)內(nèi)存耗盡事件的路徑上的代碼首先將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài)并將其掛到等待隊(duì)列上。
      [0064]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,當(dāng)內(nèi)存資源控制子系統(tǒng)(memorycgroup)內(nèi)已經(jīng)處于內(nèi)存耗盡狀態(tài)時(shí)將暫停memory cgroup組內(nèi)新進(jìn)程的創(chuàng)建或非組內(nèi)的進(jìn)程迀移Amemory cgroup組。對(duì)已經(jīng)在組內(nèi)的進(jìn)程新創(chuàng)建進(jìn)程時(shí),新進(jìn)程在被創(chuàng)建后如果所處的memory cgroup處于內(nèi)存耗盡狀態(tài),則設(shè)置TIF_MEMCG_THR0TTLE標(biāo)志位,并向進(jìn)程遞送信號(hào),以使新創(chuàng)建的進(jìn)程在完成創(chuàng)建后第一次運(yùn)行時(shí)即立刻進(jìn)出信號(hào)處理過(guò)程中,并在信號(hào)處理過(guò)程中,使新創(chuàng)建的進(jìn)程切換為睡眠狀態(tài)并將其掛入對(duì)應(yīng)內(nèi)存組的內(nèi)存耗盡事件等待隊(duì)列上,并將其從所在的memory cgroup組中摘除,直至所在的memory cgroup內(nèi)的內(nèi)存耗盡事件被處理完,再將內(nèi)存耗盡事件等待隊(duì)列上的進(jìn)程喚醒,并重新將進(jìn)程添加至目標(biāo)memory cgroup中。同理,當(dāng)外部進(jìn)程嘗試迀移入memory cgroup時(shí),如果目標(biāo)memorycgroup已經(jīng)處于內(nèi)存耗盡狀態(tài),則向新進(jìn)入的進(jìn)程遞送信號(hào),后續(xù)處理與處理新建進(jìn)程相同。
      [0065]步驟402,將內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面。
      [0066]步驟403,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)內(nèi)存頁(yè)面獲取內(nèi)存耗盡事件的相關(guān)
      ?目息O
      [0067]步驟404,用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件。
      [0068]由于步驟402-404與步驟201-203基本相同,因此不再贅述。
      [0069]步驟405,在內(nèi)存耗盡事件處理完成后喚醒等待隊(duì)列上的觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0070]在本實(shí)施例中,內(nèi)核收到用戶空間發(fā)送的內(nèi)存耗盡事件處理完成通知后喚醒等待隊(duì)列上的觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0071]從圖4中可以看出,與圖2對(duì)應(yīng)的實(shí)施例相比,本實(shí)施例中的將內(nèi)存耗盡處理流程卸載到用戶空間的方法的流程400突出了對(duì)已經(jīng)處于內(nèi)存耗盡狀態(tài)的memory cgroup處理的步驟。對(duì)已經(jīng)處于內(nèi)存耗盡狀態(tài)的memory cgroup,暫停進(jìn)程的新建及外部進(jìn)程向當(dāng)前memory cgroup的迀移,由此可避免新建進(jìn)程或新進(jìn)入的進(jìn)程進(jìn)一步的消耗內(nèi)存,從而在本已達(dá)到內(nèi)存使用上限的memory cgroup組內(nèi)引發(fā)新的一輪內(nèi)存耗盡,極端情況下,頻繁的新建或新調(diào)度進(jìn)入進(jìn)程,甚至?xí)l(fā)內(nèi)存耗盡風(fēng)暴,使系統(tǒng)長(zhǎng)時(shí)間處于內(nèi)存耗盡狀態(tài)而無(wú)法提供正常服務(wù),另一方面對(duì)正在執(zhí)行的內(nèi)存耗盡處理過(guò)程,也可減少待處理的進(jìn)程數(shù)目,提高內(nèi)存耗盡處理的速度。
      [0072]進(jìn)一步參考圖5,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N將內(nèi)存耗盡處理流程卸載到用戶空間的裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
      [0073]如圖5所示,本實(shí)施例所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置500包括:內(nèi)存耗盡內(nèi)核模塊501、存儲(chǔ)模塊502和內(nèi)存耗盡服務(wù)模塊503。其中,內(nèi)存耗盡內(nèi)核模塊501配置用于當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑;存儲(chǔ)模塊502配置用于存儲(chǔ)所述內(nèi)存耗盡事件的相關(guān)信息;內(nèi)存耗盡服務(wù)模塊503配置用于通過(guò)所述存儲(chǔ)模塊獲取所述內(nèi)存耗盡事件的相關(guān)信息,還配置用于利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。
      [0074]在本實(shí)施例中,內(nèi)存耗盡內(nèi)核模塊501位于內(nèi)核空間,存儲(chǔ)模塊502由用戶空間和內(nèi)核空間共享,內(nèi)存耗盡服務(wù)模塊503位于用戶空間。
      [0075]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,將內(nèi)存耗盡處理流程卸載到用戶空間的裝置500還包括:暫停進(jìn)程模塊,配置用于將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將所述觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上;在內(nèi)存耗盡事件處理完成后喚醒所述等待隊(duì)列上的所述觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。
      [0076]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,內(nèi)存耗盡內(nèi)核模塊501還配置用于:在將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊之后通知所述內(nèi)存耗盡服務(wù)模塊。
      [0077]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,內(nèi)存耗盡服務(wù)模塊503還配置用于:所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程信號(hào)。
      [0078]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,內(nèi)存耗盡服務(wù)模塊503還配置用于不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。
      [0079]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,內(nèi)存耗盡服務(wù)模塊503還配置用于向所述內(nèi)存耗盡內(nèi)核模塊發(fā)送內(nèi)存耗盡事件處理完成的通知。
      [0080]在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,將內(nèi)存耗盡處理流程卸載到用戶空間的裝置500還包括:監(jiān)控模塊,配置用于對(duì)所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)所述內(nèi)存耗盡內(nèi)核模塊。
      [0081]下面參考圖6,其示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)600的結(jié)構(gòu)示意圖。
      [0082]如圖6所示,計(jì)算機(jī)系統(tǒng)600包括中央處理單元(CPU)601,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(R0M)602中的程序或者從存儲(chǔ)部分608加載到隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)603中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在RAM 603中,還存儲(chǔ)有系統(tǒng)600操作所需的各種程序和數(shù)據(jù)。CPU 60KROM 602以及RAM 603通過(guò)總線604彼此相連。輸入/輸出(I/O)接口605也連接至總線 604。
      [0083]以下部件連接至I/O接口605:包括鍵盤(pán)、鼠標(biāo)等的輸入部分606 ;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分607;包括硬盤(pán)等的存儲(chǔ)部分608;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分609。通信部分609經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器610也根據(jù)需要連接至I/O接口 605??刹鹦督橘|(zhì)611,諸如磁盤(pán)、光盤(pán)、磁光盤(pán)、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器610上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分608。
      [0084]特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開(kāi)的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過(guò)通信部分609從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)611被安裝。在該計(jì)算機(jī)程序被中央處理單元(CPU)601執(zhí)行時(shí),執(zhí)行本申請(qǐng)的方法中限定的上述功能。
      [0085]附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
      [0086]描述于本申請(qǐng)實(shí)施例中所涉及到的模塊可以通過(guò)軟件的方式實(shí)現(xiàn),也可以通過(guò)硬件的方式來(lái)實(shí)現(xiàn)。所描述的模塊也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括內(nèi)存耗盡內(nèi)核模塊、存儲(chǔ)模塊和內(nèi)存耗盡服務(wù)模塊。其中,這些模塊的名稱在某種情況下并不構(gòu)成對(duì)該模塊本身的限定,例如,存儲(chǔ)模塊還可以被描述為“存儲(chǔ)所述內(nèi)存耗盡事件的相關(guān)信息的模塊”。
      [0087]作為另一方面,本申請(qǐng)還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)所述內(nèi)存頁(yè)面獲取所述內(nèi)存耗盡事件的相關(guān)信息;所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。
      [0088]以上描述僅為本申請(qǐng)的較佳實(shí)施例以及對(duì)所運(yùn)用技術(shù)原理的說(shuō)明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請(qǐng)中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請(qǐng)中公開(kāi)的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。
      【主權(quán)項(xiàng)】
      1.一種將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述方法包括: 當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑; 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程通過(guò)所述內(nèi)存頁(yè)面獲取所述內(nèi)存耗盡事件的相關(guān)信息; 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。2.根據(jù)權(quán)利要求1所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述方法還包括: 將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將所述觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上; 在內(nèi)存耗盡事件處理完成后喚醒所述等待隊(duì)列上的所述觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。3.根據(jù)權(quán)利要求1所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述方法還包括: 在將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的內(nèi)存頁(yè)面之后通知所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程。4.根據(jù)權(quán)利要求1所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件,包括: 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分; 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程信號(hào)。5.根據(jù)權(quán)利要求4所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。6.根據(jù)權(quán)利要求1所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程利用所述內(nèi)存耗盡事件的相關(guān)信息處理內(nèi)存耗盡事件還包括: 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向所述內(nèi)核空間發(fā)送內(nèi)存耗盡事件處理完成的通知。7.根據(jù)權(quán)利要求1所述的將內(nèi)存耗盡處理流程卸載到用戶空間的方法,其特征在于,所述方法還包括: 對(duì)所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)。8.—種將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述裝置包括: 內(nèi)存耗盡內(nèi)核模塊,配置用于當(dāng)進(jìn)程觸發(fā)內(nèi)存耗盡事件時(shí),將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊,所述相關(guān)信息包括:所述進(jìn)程的身份標(biāo)識(shí)及所述進(jìn)程所在的內(nèi)存資源控制子系統(tǒng)的路徑; 存儲(chǔ)模塊,配置用于存儲(chǔ)所述內(nèi)存耗盡事件的相關(guān)信息; 內(nèi)存耗盡服務(wù)模塊,配置用于通過(guò)所述存儲(chǔ)模塊獲取所述內(nèi)存耗盡事件的相關(guān)信息,還配置用于利用所述內(nèi)存耗盡事件的相關(guān)信息處理所述內(nèi)存耗盡事件。9.根據(jù)權(quán)利要求8所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述裝置還包括: 暫停進(jìn)程模塊,配置用于將觸發(fā)內(nèi)存耗盡事件的進(jìn)程由運(yùn)行狀態(tài)切換為睡眠狀態(tài),并將所述觸發(fā)內(nèi)存耗盡事件的進(jìn)程掛到等待隊(duì)列上;在內(nèi)存耗盡事件處理完成后喚醒所述等待隊(duì)列上的所述觸發(fā)內(nèi)存耗盡的進(jìn)程,重新嘗試申請(qǐng)內(nèi)存。10.根據(jù)權(quán)利要求8所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述內(nèi)存耗盡內(nèi)核模塊還配置用于: 在將所述內(nèi)存耗盡事件的相關(guān)信息寫(xiě)入用戶空間與內(nèi)核空間共享的存儲(chǔ)模塊之后通知所述內(nèi)存耗盡服務(wù)模塊。11.根據(jù)權(quán)利要求8所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述內(nèi)存耗盡服務(wù)模塊還配置用于: 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程將可結(jié)束的進(jìn)程按照進(jìn)程的內(nèi)存占用情況打分; 所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程向分?jǐn)?shù)最高的進(jìn)程發(fā)送結(jié)束進(jìn)程信號(hào)。12.根據(jù)權(quán)利要求11所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述內(nèi)存耗盡服務(wù)模塊還配置用于不響應(yīng)用戶空間發(fā)送的結(jié)束進(jìn)程的信號(hào)。13.根據(jù)權(quán)利要求8所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述內(nèi)存耗盡服務(wù)模塊還配置用于向所述內(nèi)存耗盡內(nèi)核模塊發(fā)送內(nèi)存耗盡事件處理完成的通知。14.根據(jù)權(quán)利要求8所述的將內(nèi)存耗盡處理流程卸載到用戶空間的裝置,其特征在于,所述裝置還包括: 監(jiān)控模塊,配置用于對(duì)所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程進(jìn)行監(jiān)控,在所述用戶空間的內(nèi)存耗盡服務(wù)進(jìn)程退出之前,主動(dòng)將退出事件上報(bào)所述內(nèi)存耗盡內(nèi)核模塊。
      【文檔編號(hào)】G06F9/50GK106020976SQ201610320045
      【公開(kāi)日】2016年10月12日
      【申請(qǐng)日】2016年5月13日
      【發(fā)明人】袁林思, 王柏生, 孫棟, 李志勇
      【申請(qǐng)人】北京百度網(wǎng)訊科技有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1