精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux 內存變低會發生什么問題

系統 Linux
內存不是無限的,總有不夠用的時候,Linux內核用三個機制來處理這種情況:內存回收、內存規整、oom-kill。

作者 | cynrikluo

內存不是無限的,總有不夠用的時候,linux內核用三個機制來處理這種情況:內存回收、內存規整、oom-kill。

當發現內存不足時,內核會先嘗試內存回收,從一些進程手里拿回一些頁;如果這樣還是不能滿足申請需求,則觸發內存規整;再不行,則觸發oom主動kill掉一個不太重要的進程,釋放內存。

低內存情況下,內核的處理邏輯

內存申請的核心函數是__alloc_pages_nodemask:

/*
 * This is the 'heart' of the zoned buddy allocator.
 */
struct page *
__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
              nodemask_t *nodemask)
{
  struct page *page;
  unsigned int alloc_flags = ALLOC_WMARK_LOW;
  gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */
  struct alloc_context ac = { }; 

__alloc_pages_nodemask會先嘗試調用get_page_from_freelist從伙伴系統的freelist里拿空閑頁,如果能拿到就直接返回:

如果拿不到,則進入慢速路徑:

__alloc_pages_slowpath,慢速路徑,顧名思義,就是拿得慢一點,需要做一些操作以后再拿。

首先, __alloc_pages_slowpath會喚醒kswapd:

kswapd是一個守護進程,專門進行內存回收操作,執行路徑:

它被喚醒后,會立1刻開始進行回收,效率高的話,freelist上會立刻多出很多空閑頁。

所以 __alloc_pages_slowpath會馬上再次嘗試從freelist獲取頁面,獲取成功則直接返回了。

若還是失敗, __alloc_pages_slowpath則會進入direct_reclaim階段:

direct_reclaim,顧名思義,就是直接內存回收,回收到的頁不用放回freelist再get_page_from_freelist這么麻煩了,也不用喚醒某個進程幫忙回收,而是由當前進程(current)親自下場去回收,執行路徑:

如果direct_reclaim也回收不上來, __alloc_pages_slowpath還會垂死掙扎下,做一下內存規整,嘗試把零散的頁輾轉騰挪,拼成為大order頁(僅在申請order>0的頁時有用)。

如果還是無法滿足要求,則進入oom-kill了:

總結上面的邏輯:內存申請時,首先嘗試直接從freelist里拿;失敗了則先喚醒kswapd幫忙回收內存;若內存低到讓kswapd也愛莫能助,則進入direct reclaim直接回收內存;若direct reclaim也無能為力,則oom:

三條水線

實際上,從freelist上拿頁不是簡單地直接拿,而是先檢查下該zone是否滿足水線要求,不滿足那就直接失敗。

內核給內存管理劃了三條水線:MIN、LOW、HIGH。

三者大小關系從字面即可推斷,MIN < LOW < HIGH。

在首次嘗試從freelist拿頁時,門檻水線是LOW;喚醒kswapd后再次嘗試拿頁,門檻水線是MIN。

所以實際邏輯如下:

所以,可以簡單地認為,可用內存低于LOW水線時,喚醒kswapd;低于MIN水線時,進行direct reclaim;而HIGH水線,是kswapd的回收終止線:

為什么內存回收時,磁盤IO會被打滿?

可以看到,kswapd和direct_reclaim最終都是走到了shrink_node:

shrink_node是內存回收的核心函數,顧名思義,讓整個node進行一次“收縮”,把不要的數據清掉,空出空閑頁。

get_scan_count決定本次掃描多少個anon page和file page。

anon page就是Anonymous Page,匿名頁,是進程的堆棧、數據段等。內核回收匿名頁時,將這些數據進行壓縮(壓縮比大概為3),然后移動到內存中的一個小角落中(swap空間),這個過程并沒有與磁盤發生交互,因此不會產生IO,但需要壓縮數據,所以耗CPU。

file page就是文件頁,是進程的代碼段、映射的文件。內核回收文件頁時,先將“臟”數據回寫到磁盤,然后釋放掉這些緩存數據,干凈的數據則直接釋放掉。這個過程涉及到寫磁盤,因此會產生IO。

簡單總結一下get_scan_count的邏輯:

所以說,不論開沒開swap,內存回收都是傾向于回收file page。

如果file page中有臟頁,那內存回收大概率就會產生一些IO,無非是IO量多少罷了。

以下情況IO可能會打滿或者暴增:

  • 當前內存不是特別緊張,但low、min水線設置得太低,之前一直沒怎么觸發過內存回收,以致于臟頁已經累積到大量,一觸發回收,立刻就是回寫大量臟頁,導致IO暴增。
  • 內存極度緊張 (free 和available同時很低)。這種情況下,anon page遠比file page多,這意味著可回收的內存很少,內核會對活躍數據下手,一些進程上一秒還用著的數據,這一秒可能就被不幸回收了,但下一秒馬上又要被使用,會再次被讀入內存。如此,同一份數據,內核就進行了多次回收和讀入,IO就加倍了。

為什么低內存有時會引發hungtask?

低內存時,通常不是個別進程觸發了direct reclaim,而是大量進程都在direct reclaim。

大家都要回寫臟頁,于是IO被打滿了。

這時候,進程會頻繁地被IO阻塞,被阻塞的進程為了不占用CPU,會調用io_schedule_timeout或io_schedule來掛起自己,直到IO完成。

這種等待是D狀態的,一旦超過了120S,就會觸發hungtask。當然,這是非常極端的情況,IO已經完全沒救的情況。

大部分時候,IO雖然打滿了,但是總能周轉過來,所以這些進程并不會等太久。

然而,這些進程若是來自同一個業務,則大概率會訪問同一個數據,這就需要通過mutex、rwsem、semaphore等同步機制來控制訪問行為。

而這些同步機制的基本接口都是uninterruptible性質的,以semaphore為例:

extern void down(struct semaphore *sem); // 基本接口。獲取信號量,獲取不到則進入uninterruptible睡眠
extern int __must_check down_interruptible(struct semaphore *sem); // 其他接口
extern int __must_check down_killable(struct semaphore *sem); // 其他接口
extern int __must_check down_trylock(struct semaphore *sem); // 其他接口
extern int __must_check down_timeout(struct semaphore *sem, long jiffies); // 其他接口

所謂uninterruptible性質,即當進程獲取不到同步資源時,直接進入D狀態等待其他進程釋放資源。

其他同步資源,rwsem、mutex等,都有這樣的uninterruptible性質接口。

正常情況下,只要持有同步資源的進程正常運行不卡頓,那么即使有上百個進程來爭搶這些同步資源,對于排序靠后的進程來說,時間也是夠的,一般不會等待超過120s。

但在低內存情況下,大家都在等IO,這些持有資源的進程也不能幸免,引發堵車連鎖反應。

如果此時同步資源的waiter們已累計了幾十個甚至上百個,那么就算只有一瞬間的io卡頓,排序靠后的waiter也容易等待超過120s,觸發hungtask。

一個非常典型的案例,一臺CVM在連續報了幾條hungtask warning后,徹底無響應了,通過魔術建觸發重啟。

系統信息如下:

內存狀況不容樂觀,典型的低內存:

log上有很多hungtask warning,超時原因都是等rwsem太長,寫者waiter和讀者waiter都有:

這些進程在等同一個rwsem,這個rwsem的地址為:ffff880e9703f370

進一步探究,發現當前對ffff880e9703f370有引用的進程為19個,11個正在讀,8個排隊。

而這11個正在讀的進程,都在做同一件事——direct reclaim,并且都卡在IO等待:

這11個進程,雖然也是D狀態,但由于時不時能調度到IO,相當于D狀態的持續時間不斷重置,所以本身并沒有觸發hungtask。

而這8個waiter進程就沒這個好運了,被前面11個進程你方唱罷我登場地阻塞,持續時間也沒有機會重置,最終超過120s,引發hungtask了。

優化低內存處理

我們已經知道了低內存會導致IO突增,甚至導致hungtask,那要如何避免呢?

可以從兩方面來避免。

(1) 調整臟頁回刷頻率

將平時的臟頁回刷頻率調高,這樣內存回收時,需要回收的臟頁就更少,降低IO的增量。

  • 調低 /proc/sys/vm/dirty_writeback_centisecs
  • 調低/proc/sys/vm/dirty_background_ratio
(2) 調高low水線和min水線

調高水線,可以更早地進入內存回收邏輯,這樣可以將free維持在一個較高水平,避免陷入極端場景。由于low和min同時受min_free_kbytes管控,所以可以直接調整min_free_kbytes值。

調高/proc/sys/vm/min_free_kbytes

責任編輯:趙寧寧 來源: 騰訊技術工程
相關推薦

2023-08-26 07:44:13

系統內存虛擬

2021-03-10 10:40:04

Redis命令Linux

2020-12-10 07:37:42

HashMap數據覆蓋

2021-08-19 17:27:41

IT數據中心災難

2021-12-27 08:24:08

漏洞網絡安全

2015-09-25 10:41:48

r語言

2023-06-27 16:53:50

2016-01-04 11:03:00

2023-04-27 07:40:08

Spring框架OpenAI

2024-01-18 11:50:28

2015-04-16 10:40:29

2015-11-19 00:11:12

2019-02-27 10:18:26

重置Windows 10Windows

2025-11-18 07:00:00

AI戰略自動化自主式AI

2011-10-11 15:42:54

大數據數據庫

2019-03-14 11:00:40

GoLua語言

2020-12-16 19:26:42

IIOTIOT工業物聯網

2012-12-25 15:19:20

Windows操作系統

2020-06-15 08:06:25

ES數據

2023-05-04 00:16:39

數字化轉型運營
點贊
收藏

51CTO技術棧公眾號

欧美视频不卡中文| 日韩精品乱码av一区二区| 色偷偷久久人人79超碰人人澡| 蜜桃视频在线观看成人| 中文字幕av片| 五月天久久久| 亚洲福利视频久久| 日本熟妇人妻中出| 色综合999| av在线一区二区| 国产成人亚洲精品| 欧美日韩中文字幕在线观看| 欧美亚视频在线中文字幕免费| 欧美亚洲一区二区三区四区| 国产精品免费看久久久无码| 嫩草研究院在线观看| 国内成人免费视频| 欧美怡红院视频一区二区三区| 国产又黄又粗又猛又爽的| 国产精品久久久久久久久久白浆| 欧美亚洲日本国产| 97在线国产视频| 91xxx在线观看| 成人99免费视频| 成人免费直播live| aaaaaa毛片| 亚洲性人人天天夜夜摸| 深夜福利91大全| 精品国产人妻一区二区三区| 精品一区二区三区四区五区| 色婷婷国产精品久久包臀| 日日噜噜夜夜狠狠久久丁香五月| 国模精品一区二区| 不卡的av电影| 97国产超碰| 亚洲天堂网在线视频| 欧美一级播放| 97视频在线看| 欧美日韩在线观看成人| 久久伦理在线| 亚洲性69xxxbbb| 免费中文字幕av| 国产乱人伦丫前精品视频| 这里是久久伊人| www.com操| 日韩欧美另类一区二区| 午夜影视日本亚洲欧洲精品| 米仓穗香在线观看| 黄色网页在线看| 中文字幕亚洲一区二区av在线| 欧美人与性禽动交精品| 天堂在线视频网站| 成人免费高清在线| 91精品国产99久久久久久红楼| 国产精品福利电影| 久久国产综合精品| 国产情人节一区| 中文字幕一区2区3区| 日韩高清在线电影| 国产精品wwwwww| 无码任你躁久久久久久久| 欧美一级播放| 国产精品久久久91| 中文字幕在线网站| 日本不卡一区二区三区高清视频| 国产精品美女视频网站| 中文字幕av片| 国产在线看一区| 97se亚洲综合| 无码国产精品一区二区免费16| 99久久伊人久久99| 免费中文日韩| yourporn在线观看视频| 国产精品久久久久国产精品日日| 亚洲啪啪av| 欧美96在线| 一区二区欧美视频| 亚欧无线一线二线三线区别| 日韩成人动漫| 51精品国自产在线| 日本中文字幕有码| 亚洲电影一级片| 一区二区三欧美| 中国一级片在线观看| 韩国亚洲精品| 日韩暖暖在线视频| 亚洲无码精品国产| 粉嫩aⅴ一区二区三区四区五区| 国产伦精品一区| 极品美乳网红视频免费在线观看| 中文字幕一区免费在线观看| 久操手机在线视频| 久久爱91午夜羞羞| 欧美喷潮久久久xxxxx| 欧美一区二区三区影院| 香蕉视频一区| 久久精品成人一区二区三区| 日韩少妇高潮抽搐| 日本成人在线视频网站| 高清国语自产拍免费一区二区三区| 日本xxxxxwwwww| 国产欧美一区二区精品性| 韩国黄色一级大片| 午夜影院在线播放| 欧美日韩国产小视频在线观看| 最新中文字幕日本| 久久一本综合| 97超碰国产精品女人人人爽 | 亚洲激情图片小说视频| 日本网站免费在线观看| 国语精品视频| 亚洲网站在线播放| 久久午夜无码鲁丝片午夜精品| 天堂av在线一区| 97操在线视频| 91精彩在线视频| 疯狂做受xxxx高潮欧美日本| 91 视频免费观看| 国产欧美一区| 久久久久久久久国产精品| 91精品国产色综合久久不8| 99久久婷婷国产综合精品| 一级做a爰片久久| 三妻四妾完整版在线观看电视剧| 欧美一级高清片在线观看| 人妻精品久久久久中文| 国产精品日韩久久久| 亚洲在线第一页| 五月天婷婷在线视频| 色噜噜夜夜夜综合网| 黄色av电影网站| 亚洲欧美文学| 91亚洲精品久久久| 黄色网址在线免费| 欧美无乱码久久久免费午夜一区 | 中文字幕在线看视频国产欧美| 日本在线小视频| 国产精品自在在线| 吴梦梦av在线| 黄色成人小视频| 在线播放国产一区中文字幕剧情欧美| 日韩 欧美 综合| 懂色av中文字幕一区二区三区| 国产精品12p| 高清欧美日韩| 中文字幕欧美精品日韩中文字幕| 天堂网一区二区| 国产午夜精品一区二区三区视频| 男人揉女人奶房视频60分| 粉嫩精品导航导航| 久久露脸国产精品| 人妻精品一区二区三区| 亚洲午夜三级在线| 黄色免费视频网站| 亚洲毛片在线| 麻豆传媒一区| 88xx成人免费观看视频库 | 北条麻妃亚洲一区| 91精品蜜臀一区二区三区在线| 国产精品亚洲激情| 黄色网页在线免费观看| 日韩一区二区在线观看| 免看一级a毛片一片成人不卡| 国产伦精品一区二区三区免费迷| 一二三四中文字幕| 99精品在免费线中文字幕网站一区| 欧美精品日韩www.p站| 性色av蜜臀av| 亚洲成人资源网| 欧美高清性xxxx| 日韩黄色在线观看| 一本一道久久a久久综合精品| 国产精品igao视频网网址不卡日韩| 久久综合久久八八| 日批视频免费播放| 日本韩国一区二区三区| av在线免费播放网址| 国产一区二区在线电影| 久久99久久99精品| 国产麻豆一区二区三区精品视频| 国产精品亚洲综合天堂夜夜| a视频在线观看| 亚洲国产天堂网精品网站| 日韩熟女一区二区| 亚洲色图.com| 漂亮人妻被黑人久久精品| 视频在线观看91| 三年中文高清在线观看第6集| 中文在线免费一区三区| 国产91精品久久久久| 91露出在线| 亚洲精品一区在线观看| 波多野结衣黄色| 一区二区三区高清不卡| 欧美特级黄色录像| 国产aⅴ综合色| 日韩精品一区二区三区不卡| 亚洲激情五月| 欧美成熟毛茸茸复古| 日韩综合av| 51色欧美片视频在线观看| 免费观看久久久久| 亚洲欧美日韩直播| 国内精品国产成人国产三级| 91久久精品网| 毛片aaaaa| 国产精品麻豆一区二区| 亚洲av成人片无码| 国内不卡的二区三区中文字幕| 女人和拘做爰正片视频| 婷婷综合网站| 日韩久久精品一区二区三区| 亚洲视频精选| 国产精品美女久久久免费| 三级在线看中文字幕完整版| 美女少妇精品视频| 91在线视频| 日韩av影片在线观看| 国产福利资源在线| 欧美日韩精品福利| 国产一卡二卡三卡| 黑人精品xxx一区| 九九视频免费看| 亚洲三级小视频| 亚洲欧美va天堂人熟伦| 91网站在线播放| 扒开伸进免费视频| 国产成人午夜精品影院观看视频 | 精品99在线观看| 最近中文字幕一区二区三区| 亚洲v国产v欧美v久久久久久| 99久久亚洲一区二区三区青草| 中国老熟女重囗味hdxx| 久久精品99国产国产精| 激情内射人妻1区2区3区| 夜夜嗨一区二区三区| 中文字幕日韩精品无码内射| 91视频一区| 亚洲欧美综合一区| 成人在线视频免费观看| 欧美一区二区三区在线播放 | 亚洲一区二区三区四区中文| 国产99久久| 欧美久久综合性欧美| 日韩极品在线| 蜜桃传媒视频麻豆第一区免费观看| 成人盗摄视频| 国产伦精品一区二区三区免 | 精品一区二区三区免费观看 | 一本一道久久a久久综合精品| 欧美理论在线播放| 日韩在线三区| 久久国产中文字幕| 中文字幕色一区二区| 久久久久久久久99精品大| 久久久成人精品一区二区三区| 亚洲成人二区| 国产玉足脚交久久欧美| 亚洲国产精品一区| 日本不卡在线观看视频| 久久久久网站| 538任你躁在线精品免费| 美女视频黄 久久| 激情五月婷婷基地| 国产综合色在线视频区| 精品无码av一区二区三区不卡| 成人午夜又粗又硬又大| www.免费av| 国产欧美一区二区三区在线看蜜臀| 国产又黄又粗的视频| 中文字幕一区免费在线观看| 免费日韩在线视频| 欧美日韩国产一区二区三区| 狠狠人妻久久久久久| 欧美在线视频不卡| 国产手机精品视频| 亚洲国产精品久久久久| 经典三级在线| 久久综合伊人77777尤物| 激情av在线| 日韩免费观看在线观看| www一区二区三区| 国语精品中文字幕| 成人激情电影在线| 国产成人生活片| 久久精品人人| 人妻激情偷乱视频一区二区三区| av一区二区久久| 精品在线观看一区| 亚洲第一激情av| japanese国产在线观看| 欧美成人a视频| 邻居大乳一区二区三区| 久久国产色av| 日韩脚交footjobhdboots| 国产精品免费久久久久久| 视频一区日韩精品| 视频一区国产精品| 激情一区二区| 亚欧激情乱码久久久久久久久| 粉嫩13p一区二区三区| 中文天堂资源在线| 亚洲福利一二三区| 97人妻精品一区二区三区动漫| 亚洲精品美女久久久久| 麻豆免费在线视频| 日本一区二区三区四区视频| 精品国产一区二区三区2021| 欧美精品一区二区三区在线看午夜 | 精品无码久久久久国产| 亚洲乱码电影| 亚洲五月天综合| 不卡一区二区三区四区| 日本中文在线视频| 91国偷自产一区二区三区观看| 亚洲高清视频在线播放| 日韩在线精品一区| 成人免费网站视频| 国产精品.com| 午夜视频精品| 日本高清一区二区视频| 国产欧美精品一区aⅴ影院 | 国产精品美女久久久| 免费高清视频在线观看| 国产精品天美传媒沈樵| 中文在线第一页| 亚洲国产成人爱av在线播放| 国产二区三区在线| 国产精品一区二区三区久久久| 亚洲自拍电影| 欧美亚洲国产成人| av中文字幕亚洲| 麻豆一区二区三区精品视频| 91麻豆精品91久久久久同性| 日本中文字幕在线看| 国产精品久久久久久久久久久久久久| 美女av一区| 国产3p露脸普通话对白| 不卡的电视剧免费网站有什么| 久久国产露脸精品国产| 欧美v日韩v国产v| 色爱综合区网| www.av一区视频| 国产精品黄色| 欧美一级片在线免费观看| 一区二区三区精品在线观看| 国产极品999| 欧美区在线播放| 96sao在线精品免费视频| 国产精品视频一二三四区| 国产成人自拍网| 国产亚洲自拍av| 亚洲精品在线观看网站| 日韩精品av| 日韩jizzz| 麻豆精品一区二区av白丝在线| 极品久久久久久久| 欧美日韩一区二区在线视频| 色老头视频在线观看| 成人写真福利网| 欧美日本不卡高清| 麻豆传媒在线看| 亚洲不卡在线观看| 亚洲欧美色视频| 国产精品白丝jk喷水视频一区 | 成人av网在线| 亚洲午夜18毛片在线看| 一区二区三区天堂av| 外国成人毛片| 久久这里只有精品18| 91在线看国产| 探花国产精品一区二区| 久久久国产精品一区| 日韩欧美一级| 国产精品后入内射日本在线观看| 久久久精品一品道一区| 亚洲综合精品视频| 欧美第一页在线| 无码日韩精品一区二区免费| 在线观看免费成人av| 亚洲三级理论片| 色窝窝无码一区二区三区| 国产mv久久久| 91精品啪在线观看国产81旧版| 国产chinese中国hdxxxx| 日本丰满少妇一区二区三区| 欧美黑人激情| 精品免费二区三区三区高中清不卡| 日韩黄色免费电影| 成年人一级黄色片| 日韩电影第一页| 伊人久久精品| 噜噜噜久久亚洲精品国产品麻豆| 亚洲国产精品99久久久久久久久| 精品黑人一区二区三区在线观看| 欧美在线不卡区| 欧美在线免费一级片| 亚洲日本精品视频| 日韩一区二区在线看片| 天然素人一区二区视频|