日本最新免费不卡二区在线_中国一级毛片欧美一级毛片_国产精品久久视频_日本在线高清视频

快訊 >

系統(tǒng)內(nèi)存滿了,會發(fā)生什么

時間:2023-08-26 17:31:20       來源:清一色財經(jīng)

只有在訪問已分配的虛擬地址空間的時候,操作系統(tǒng)通過查找頁表,發(fā)現(xiàn)虛擬內(nèi)存對應(yīng)的頁沒有在物理內(nèi)存中,就會觸發(fā)缺頁中斷,然后操作系統(tǒng)會建立虛擬內(nèi)存和物理內(nèi)存之間的映射關(guān)系。

前言

前面我們我們已經(jīng)了解了linux是如何進行內(nèi)存分配的、虛擬內(nèi)存和物理內(nèi)存的關(guān)系、虛擬內(nèi)存如何管理,今天我們來學(xué)習(xí)一下系統(tǒng)內(nèi)存滿了,會發(fā)生什么?以及會帶來什么問題?大致分成這四個內(nèi)容來進行學(xué)習(xí)。

內(nèi)存分配的過程哪些內(nèi)存可以被回收內(nèi)存回收帶來的問題如何保障一個進程不被kill


(資料圖片僅供參考)

內(nèi)存分配的過程

前面我們已經(jīng)學(xué)習(xí)過應(yīng)用程序通過 malloc 函數(shù)申請內(nèi)存的,需要注意的是,malloc() 分配的是虛擬內(nèi)存。

如果分配后的虛擬內(nèi)存沒有被訪問的話,虛擬內(nèi)存是不會映射到物理內(nèi)存的,這樣就不會占用物理內(nèi)存了。

只有在訪問已分配的虛擬地址空間的時候,操作系統(tǒng)通過查找頁表,發(fā)現(xiàn)虛擬內(nèi)存對應(yīng)的頁沒有在物理內(nèi)存中,就會觸發(fā)缺頁中斷,然后操作系統(tǒng)會建立虛擬內(nèi)存和物理內(nèi)存之間的映射關(guān)系。

缺頁中斷就是要訪問的頁不在主存,需要操作系統(tǒng)將其調(diào)入主存后再進行訪問。在這個時候,被內(nèi)存映射的文件實際上成了一個分頁交換文件。

如果沒有空閑的物理內(nèi)存,那么內(nèi)核就會開始進行回收內(nèi)存的工作,回收的方式主要是兩種:直接內(nèi)存回收和后臺內(nèi)存回收。

后臺內(nèi)存回收(kswapd):在物理內(nèi)存緊張的時候,會喚醒 kswapd 內(nèi)核線程來回收內(nèi)存,這個回收內(nèi)存的過程異步的,不會阻塞進程的執(zhí)行。直接內(nèi)存回收(direct reclaim):如果后臺異步回收跟不上進程內(nèi)存申請的速度,就會開始直接回收,這個回收內(nèi)存的過程是同步的,會阻塞進程的執(zhí)行。

如果直接內(nèi)存回收后,空閑的物理內(nèi)存仍然無法滿足此次物理內(nèi)存的申請,那么內(nèi)核就會放最后的大招了 ——觸發(fā) OOM 機制。

OOM Killer 機制會根據(jù)算法選擇一個占用物理內(nèi)存較高的進程,然后將其殺死,以便釋放內(nèi)存資源,如果物理內(nèi)存依然不足,OOM Killer 會繼續(xù)殺死占用物理內(nèi)存較高的進程,直到釋放足夠的內(nèi)存位置。

物理內(nèi)存申請過程如下圖:

哪些內(nèi)存可以被回收

系統(tǒng)內(nèi)存緊張的時候,就會進行回收內(nèi)存的工作,那具體哪些內(nèi)存是可以被回收的呢?

主要有兩類內(nèi)存可以被回收,而且它們的回收方式也不同。

文件頁(File-backed Page):內(nèi)核緩存的磁盤數(shù)據(jù)(Buffer)和內(nèi)核緩存的文件數(shù)據(jù)(Cache)都叫作文件頁。大部分文件頁,都可以直接釋放內(nèi)存,以后有需要時,再從磁盤重新讀取就可以了。而那些被應(yīng)用程序修改過,并且暫時還沒寫入磁盤的數(shù)據(jù)(也就是臟頁),就得先寫入磁盤,然后才能進行內(nèi)存釋放。所以,回收干凈頁的方式是直接釋放內(nèi)存,回收臟頁的方式是先寫回磁盤后再釋放內(nèi)存。匿名頁(Anonymous Page):這部分內(nèi)存沒有實際載體,不像文件緩存有硬盤文件這樣一個載體,比如堆、棧數(shù)據(jù)等。這部分內(nèi)存很可能還要再次被訪問,所以不能直接釋放內(nèi)存,它們回收的方式是通過 Linux 的 Swap 機制,Swap 會把不常訪問的內(nèi)存先寫到磁盤中,然后釋放這些內(nèi)存,給其他更需要的進程使用。再次訪問這些內(nèi)存時,重新從磁盤讀入內(nèi)存。

Swap分區(qū)在系統(tǒng)的物理內(nèi)存不夠用的時候,把硬盤內(nèi)存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區(qū)中,等到那些程序要運行時,再從Swap分區(qū)中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。

文件頁和匿名頁的回收都是基于 LRU 算法,也就是優(yōu)先回收不常訪問的內(nèi)存。LRU 回收算法,實際上維護著 active 和 inactive 兩個雙向鏈表,其中:

active_list活躍內(nèi)存頁鏈表,這里存放的是最近被訪問過(活躍)的內(nèi)存頁;inactive_list不活躍內(nèi)存頁鏈表,這里存放的是很少被訪問(非活躍)的內(nèi)存頁;

越接近鏈表尾部,就表示內(nèi)存頁越不常訪問。在回收內(nèi)存時,系統(tǒng)就可以根據(jù)活躍程度,優(yōu)先回收不活躍的內(nèi)存。

內(nèi)存回收帶來的問題

回收內(nèi)存方式的不同。回收的內(nèi)存類型的不同會帶來不同的影響,下面我們就來學(xué)習(xí)一下不同的是否,不同的類型會帶來怎樣的影響。回收內(nèi)存方式:后臺回收:直接回收

一種是后臺內(nèi)存回收,也就是喚醒 kswapd 內(nèi)核線程,這種方式是異步回收的,不會阻塞進程。一種是直接內(nèi)存回收,這種方式是同步回收的,會阻塞進程,這樣就會造成很長時間的延遲,以及系統(tǒng)的CPU 利用率會升高,最終引起系統(tǒng)負荷飆高。

可被回收的內(nèi)存類型:文件頁和匿名頁

文件頁的回收:對于干凈頁是直接釋放內(nèi)存,這個操作不會影響性能,而對于臟頁會先寫回到磁盤再釋放內(nèi)存,這個操作會發(fā)生磁盤 I/O的,這個操作是會影響系統(tǒng)性能的。匿名頁的回收:如果開啟了 Swap 機制,那么 Swap 機制會將不常訪問的匿名頁換出到磁盤中,下次訪問時,再從磁盤換入到內(nèi)存中,這個操作是會影響系統(tǒng)性能的。

可以看到,回收內(nèi)存的操作基本都會發(fā)生磁盤 I/O 的,如果回收內(nèi)存的操作很頻繁,意味著磁盤 I/O 次數(shù)會很多,整個系統(tǒng)給人的感覺就是很卡。

如何降低內(nèi)存回收的影響

從文件頁和匿名頁的回收操作來看,文件頁的回收操作對系統(tǒng)的影響相比匿名頁的回收操作會少一點,因為文件頁對于干凈頁回收是不會發(fā)生磁盤 I/O 的,匿名頁的 Swap 換入換出這兩個操作都會發(fā)生磁盤 I/O。盡早觸發(fā) kswapd 內(nèi)核線程異步回收內(nèi)存來避免應(yīng)用程序進行直接內(nèi)存回收。

如何保護一個進程不被 OOM 殺掉呢?

在系統(tǒng)空閑內(nèi)存不足的情況,進程申請了一個很大的內(nèi)存,如果直接內(nèi)存回收都無法回收出足夠大的空閑內(nèi)存,那么就會觸發(fā) OOM 機制,內(nèi)核就會根據(jù)算法選擇一個進程殺掉。

Linux 到底是根據(jù)什么標準來選擇被殺的進程呢?這就要提到一個在 Linux 內(nèi)核里有一個oom_badness()函數(shù),它會把系統(tǒng)中可以被殺掉的進程掃描一遍,并對每個進程打分,得分最高的進程就會被首先殺掉。

進程得分的結(jié)果受下面這兩個方面影響:

第一,進程已經(jīng)使用的物理內(nèi)存頁面數(shù)。第二,每個進程的 OOM 校準值 oom_score_adj,我們可以在設(shè)置 -1000 到 1000 之間的任意一個數(shù)值,調(diào)整進程被 OOM Kill 的幾率。

函數(shù) oom_badness() 里的最終計算方法是這樣的:

// points 代表打分的結(jié)果// process_pages 代表進程已經(jīng)使用的物理內(nèi)存頁面數(shù)// oom_score_adj 代表 OOM 校準值// totalpages 代表系統(tǒng)總的可用頁面數(shù)points = process_pages + oom_score_adj * totalpages / 1000

計算出來的值越大,那么這個進程被 OOM Kill 的幾率也就越大。

每個進程的 oom_score_adj默認值都為 0,所以最終得分跟進程自身消耗的內(nèi)存有關(guān),消耗的內(nèi)存越大越容易被殺掉。我們可以通過調(diào)整 oom_score_adj 的數(shù)值,來改成進程的得分結(jié)果:

如果你不想某個進程被首先殺掉,那你可以調(diào)整該進程的 oom_score_adj,從而改變這個進程的得分結(jié)果,降低該進程被 OOM 殺死的概率。如果你想某個進程無論如何都不能被殺掉,那你可以將 oom_score_adj 配置為 -1000。

我們最好將一些很重要的系統(tǒng)服務(wù)的 oom_score_adj 配置為 -1000,比如 sshd,因為這些系統(tǒng)服務(wù)一旦被殺掉,我們就很難再登陸進系統(tǒng)了。

不建議將我們自己的業(yè)務(wù)程序的 oom_score_adj 設(shè)置為 -1000,因為業(yè)務(wù)程序一旦發(fā)生了內(nèi)存泄漏,而它又不能被殺掉,這就會導(dǎo)致隨著它的內(nèi)存開銷變大,OOM killer 不停地被喚醒,從而把其他進程一個個給殺掉。

關(guān)鍵詞:

首頁
頻道
底部
頂部
日本最新免费不卡二区在线_中国一级毛片欧美一级毛片_国产精品久久视频_日本在线高清视频

        国产激情91久久精品导航| 欧美一级一区二区| 亚洲高清免费观看 | 亚洲视频资源在线| 欧美伊人久久久久久午夜久久久久| 亚洲成人免费视| 欧美成人一区二区三区片免费| 国产精品影视天天线| 日韩欧美在线不卡| 国产在线不卡一区| 国产精品久久99| 欧美在线一二三| 久久精品99国产精品| 国产人成亚洲第一网站在线播放| 91婷婷韩国欧美一区二区| 午夜av一区二区| 欧美精品一区二| 91免费观看视频| 视频在线观看国产精品| 久久天天做天天爱综合色| 99精品欧美一区二区三区小说 | 国产精品18久久久久久久久 | 亚洲国产成人精品视频| 日韩欧美成人午夜| 成人国产视频在线观看| 亚洲第一成年网| 久久久影视传媒| 欧美综合色免费| 国产一区二区三区高清播放| 亚洲另类一区二区| 精品国产乱码久久久久久蜜臀| 91丨porny丨首页| 青草av.久久免费一区| 国产精品免费观看视频| 制服丝袜激情欧洲亚洲| 成人久久久精品乱码一区二区三区| 亚洲一区二区欧美| 国产亚洲精品资源在线26u| 色狠狠综合天天综合综合| 精品影视av免费| 亚洲精品久久嫩草网站秘色| 精品国产91洋老外米糕| 91麻豆精品在线观看| 久久精品99国产国产精| 亚洲狼人国产精品| 精品国产凹凸成av人网站| 91黄视频在线| 国产成人av一区二区三区在线| 亚洲精品免费在线观看| 精品国产三级a在线观看| 欧美性淫爽ww久久久久无| 国产精品伊人色| 日韩高清一区二区| 亚洲天堂成人在线观看| 欧美精品一区二区三| 在线观看视频欧美| 成人黄色免费短视频| 日本不卡一区二区三区| 亚洲女同ⅹxx女同tv| 久久久久久久电影| 日韩一级片网站| 日本道精品一区二区三区| 成人在线视频一区二区| 久久99国产精品久久99| 亚洲bt欧美bt精品| 亚洲另类色综合网站| 国产精品美女久久久久久久网站| 欧美哺乳videos| 欧美精品色综合| 色婷婷综合久久久中文字幕| 国产成人av电影在线| 精品在线播放午夜| 日本午夜精品视频在线观看| 亚洲蜜桃精久久久久久久| 欧美激情综合五月色丁香| 久久这里只有精品首页| 日韩一区二区三区高清免费看看| 欧美体内she精高潮| 94-欧美-setu| 波多野结衣精品在线| 粉嫩高潮美女一区二区三区 | 日韩不卡一区二区三区 | 久久er99精品| 老司机午夜精品| 日本美女一区二区| 日韩黄色片在线观看| 亚洲成人午夜影院| 亚洲一区二区三区中文字幕| 亚洲免费电影在线| 亚洲人快播电影网| 国产精品高潮呻吟久久| 中文在线免费一区三区高中清不卡| 久久婷婷色综合| 久久久久久久久久久久电影| 久久亚洲精品国产精品紫薇| 精品国产欧美一区二区| 日韩精品一区在线观看| 日韩欧美中文一区| 欧美一级一区二区| 日韩欧美123| 欧美一区二区三区视频在线| 制服丝袜激情欧洲亚洲| 91麻豆精品国产91久久久更新时间| 欧美日韩不卡在线| 555www色欧美视频| 91麻豆精品国产91久久久久久| 欧美美女一区二区在线观看| 91麻豆精品国产91久久久更新时间| 91精品国产综合久久香蕉的特点| 欧美一级夜夜爽| 欧美不卡视频一区| 久久久91精品国产一区二区精品| 国产欧美日韩一区二区三区在线观看 | 欧美久久久影院| 欧美一区二区三区视频免费播放 | 欧美精品一二三| 日韩视频免费观看高清完整版 | 成人av资源在线观看| 91网址在线看| 欧美亚洲另类激情小说| 欧美久久一二区| 精品久久久久久久久久久久包黑料 | 久久久精品人体av艺术| 国产女同互慰高潮91漫画| 国产精品免费视频一区| 亚洲欧美区自拍先锋| 亚洲免费资源在线播放| 五月天丁香久久| 激情综合网av| 丁香五精品蜜臀久久久久99网站| 色综合天天做天天爱| 欧美久久一区二区| 精品国产乱码久久久久久久久 | 成人精品在线视频观看| 色婷婷亚洲综合| 欧美精品亚洲一区二区在线播放| 欧美本精品男人aⅴ天堂| 国产亚洲美州欧州综合国| 亚洲美女淫视频| 青青草国产精品97视觉盛宴| 国产福利一区二区| 日本道精品一区二区三区| 日韩亚洲国产中文字幕欧美| 国产人伦精品一区二区| 亚洲最大的成人av| 精品一区二区三区香蕉蜜桃| gogogo免费视频观看亚洲一| 欧美日韩黄色一区二区| 久久色在线观看| 亚洲男人的天堂在线观看| 琪琪久久久久日韩精品| 成人国产精品视频| 91 com成人网| 国产精品丝袜黑色高跟| 午夜精品成人在线视频| 国产成a人亚洲| 欧美高清性hdvideosex| 欧美极品aⅴ影院| 亚洲18色成人| 成人av资源在线| 欧美一区二区精品| 成人免费在线观看入口| 裸体一区二区三区| 色综合天天综合网天天狠天天| 日韩欧美成人激情| 一区二区视频免费在线观看| 国内外精品视频| 欧美午夜电影在线播放| 国产日韩成人精品| 天天av天天翘天天综合网色鬼国产 | 国产资源精品在线观看| 在线免费观看一区| 国产色一区二区| 免费在线观看视频一区| 色综合久久88色综合天天免费| 亚洲精品在线免费观看视频| 亚洲国产精品一区二区久久| 国产成人在线视频网站| 91精品婷婷国产综合久久性色| 日韩伦理电影网| 国产精品自在欧美一区| 欧美精品tushy高清| 亚洲男人都懂的| 处破女av一区二区| 欧美本精品男人aⅴ天堂| 亚洲成年人影院| 97久久超碰国产精品| 久久久久久久综合日本| 日韩精品福利网| 91福利精品第一导航| 国产精品久久久久婷婷二区次| 九色综合国产一区二区三区| 欧美日产国产精品| 亚洲日本护士毛茸茸| 国产91在线|亚洲| 精品处破学生在线二十三| 日韩电影免费一区| 欧美日韩在线三区| 蜜桃视频在线观看一区| 成人在线综合网站|