精品欧美一区二区三区在线观看 _久久久久国色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成人app永久免费| 国产午夜精品一区二区三区嫩草| 国产成人精品久久久| 蜜桃av.com| 亚洲开心激情| 在线视频国内一区二区| 韩国黄色一级大片| 隣の若妻さん波多野结衣| 久久成人国产| 欧美激情高清视频| 亚洲图片第一页| 中文字幕日韩高清在线| 91成人国产精品| 成人在线视频一区二区三区| 久草视频视频在线播放| 国产系列电影在线播放网址| 欧美女同网站| 亚洲福利国产| 中文字幕欧美精品在线| 久久性爱视频网站| www欧美在线观看| 色悠久久久久综合欧美99| 亚洲啊啊啊啊啊| aaa在线观看| 波多野结衣亚洲一区| 国产精品片aa在线观看| 欧美激情综合在线| 欧美专区日韩专区| www.夜夜爱| 成人在线app| av在线不卡电影| 国产日韩精品在线| 午夜精品久久久久久久久久久久久蜜桃| 亚洲警察之高压线| 最新欧美精品一区二区三区| 国产精品福利视频| 无码日韩精品一区二区| 亚洲激情二区| 伦伦影院午夜日韩欧美限制| 国产又粗又长又硬| 四虎视频在线精品免费网址| 日韩欧美成人网| 欧美一级免费播放| 伊人222成人综合网| 国产欧美一区二区三区在线看蜜臀| 韩国日本不卡在线| 久久久久亚洲AV| 在线观看免费一区二区| 中文字幕免费国产精品| 快灬快灬一下爽蜜桃在线观看| 美女呻吟一区| 精品欧美黑人一区二区三区| 亚洲成人网上| 天堂v在线观看| 丁香天五香天堂综合| 亚洲最大福利视频| 国产伦一区二区| 国产在线不卡一区| 色综合久久悠悠| 欧美日韩在线视频免费播放| 色喇叭免费久久综合网| 色偷偷偷综合中文字幕;dd| 日本一二三不卡视频| 成人在线免费观看网站| 欧美羞羞免费网站| 天天综合网日韩| 成人在线高清| 欧美日本一区二区| 一级网站在线观看| 性感女国产在线| 亚洲成在线观看| 800av在线免费观看| av日韩国产| 午夜婷婷国产麻豆精品| 国产又粗又长又爽视频| 黄色大片在线| 国产毛片一区二区| 99精品国产一区二区| 亚洲欧美高清视频| 久久先锋影音av鲁色资源| 伊人久久大香线蕉av一区二区| av中文字幕免费观看| 精品国产精品国产偷麻豆| 中文字幕精品久久久久| 青花影视在线观看免费高清| 日韩免费久久| 欧美日韩福利在线观看| 天天操天天操天天操天天| 日本va欧美va欧美va精品| 国产一区在线播放| 亚洲大尺度视频| 91日韩一区二区三区| 日韩欧美亚洲在线| av网站大全在线| 懂色av一区二区三区| 中文字幕永久视频| aaa国产精品| 在线成人激情黄色| 国产亚洲欧美久久久久| 久久综合中文| 91亚洲精品丁香在线观看| 日本国产在线| 亚洲精品久久久蜜桃| 日批视频在线免费看| 四虎影视精品永久在线观看| 亚洲精品美女在线观看播放| 亚洲欧美另类日本| 国产亚洲一级| 91在线播放视频| av中文天堂在线| 亚瑟在线精品视频| 中文字幕第10页| 精品久久影院| 51午夜精品视频| 国产成a人亚洲精v品无码| 国产视频一区二区三区在线观看| 国产制服91一区二区三区制服| 人人鲁人人莫人人爱精品| 日韩欧美精品在线视频| 你懂得视频在线观看| 国产日韩一区二区三区在线| 91亚洲va在线va天堂va国| 国产一二三区在线视频| 五月婷婷久久丁香| 亚洲av综合色区无码另类小说| 欧美手机视频| 青青草一区二区| 亚洲精品无遮挡| 亚洲另类春色国产| 日本在线播放一区二区| 精品国产一区探花在线观看 | 亚洲精品视频在线| 天天插天天操天天射| 亚洲毛片免费看| 国外成人在线视频| 亚洲av综合色区无码一二三区| 国产精品久久精品日日| 九热视频在线观看| 欧美三级美国一级| 中文字幕av在线一区二区三区| 欧美亚洲国产视频小说| 欧美自拍第一页| 一区二区三区四区五区视频在线观看| 在线观看国产一级片| 国产欧美日韩免费观看| 日本精品一区二区三区在线| 无码国产精品高潮久久99| 亚洲综合激情另类小说区| 亚洲欧美天堂在线| 五月激情久久久| 成人av色在线观看| 黄色小网站在线观看| 欧美高清www午色夜在线视频| 大吊一区二区三区| 久久狠狠亚洲综合| 黄色免费高清视频| 国产日韩欧美中文在线| 日韩女优电影在线观看| 一区二区成人免费视频| 国产专区欧美精品| 欧美人与动牲交xxxxbbbb| 国产麻豆一区二区三区| 欧美激情视频一区二区三区不卡| 蜜桃在线一区二区| 欧美日韩一区二区三区在线免费观看| 极品粉嫩小仙女高潮喷水久久| 亚洲男人影院| 日本午夜精品一区二区三区| 国产精品蜜月aⅴ在线| 久久韩国免费视频| 亚洲成人中文字幕在线| 天天亚洲美女在线视频| 一区二区三区伦理片| 久久超碰97中文字幕| 97超级碰碰| 欧亚av在线| 亚洲区中文字幕| 亚洲天堂中文字幕在线| 一区二区三区小说| 91黄色免费视频| 免费一区二区视频| 国产精品国模大尺度私拍| 999av小视频在线| 亚洲人成在线一二| 一级片免费网站| 亚洲国产精品久久不卡毛片 | 欧美黄色免费影院| 日韩av在线播放网址| 91在线国产电影| sm捆绑调教国产免费网站在线观看 | 国产又大又粗又爽的毛片| 国产深夜精品| 日韩一区二区三区高清| 成人日韩视频| 欧美一级大片在线观看| 蜜桃视频网站在线观看| 亚洲精品电影在线观看| 中文字幕精品一区二区精| 亚洲国产sm捆绑调教视频| av中文字幕网址| 黄色在线一区| 亚洲欧美日本国产有色| 亚洲一区二区电影| 国产精品久久久久91| 大香伊人中文字幕精品| 正在播放国产一区| 性xxxxbbbb| 欧美一级欧美三级| 青青青视频在线播放| 国产成人免费视| 亚洲人辣妹窥探嘘嘘| 亚洲久久一区| 成年人视频大全| 久久精品高清| 欧美国产综合视频| 99re6热只有精品免费观看| 国产精品入口夜色视频大尺度| 男人av在线播放| 日韩欧美一级精品久久| 69av视频在线观看| 欧美日韩国产中文字幕| 欧美成人三级在线观看| 国产精品久久久久影院| 蜜乳av中文字幕| 91理论电影在线观看| 国产清纯白嫩初高中在线观看性色| 蜜桃久久久久久| 999香蕉视频| 亚洲一区图片| 无罩大乳的熟妇正在播放| 欧美福利在线| 成人网址在线观看| 午夜伦理福利在线| 国外成人性视频| av剧情在线观看| 欧美国产在线电影| 四季久久免费一区二区三区四区| 亚洲美女www午夜| 三级理论午夜在线观看| 日韩激情在线视频| 婷婷色在线观看| 欧美mv和日韩mv的网站| 国产激情视频在线播放| 欧美一个色资源| 999精品国产| 欧美电视剧在线看免费| 国产精品热久久| 91精品国产高清一区二区三区| 91麻豆国产在线| 欧美日韩三级视频| 91黄色在线视频| 91精品国产综合久久精品| 国产女无套免费视频| 欧美电影在线免费观看| 91国产精品一区| 69久久99精品久久久久婷婷| 国产精品无码在线播放| 91麻豆精品国产综合久久久久久| 国产农村妇女毛片精品| 日韩精品最新网址| 手机看片1024日韩| 国产网站欧美日韩免费精品在线观看| 四虎影视在线观看2413| 亚洲欧美激情一区| 中文字幕日本在线| www亚洲精品| 亚洲男同gay网站| 午夜精品一区二区三区在线视频| 牛牛精品一区二区| 国产精品久久91| 图片一区二区| 成人欧美一区二区三区在线观看| 精品三级av在线导航| 欧美日韩精品久久久免费观看| 国产精品手机在线播放| 做爰高潮hd色即是空| 亚洲特级毛片| 99久久久无码国产精品6| 美女性感视频久久| 中文字幕乱妇无码av在线| 97久久人人超碰| 免费看裸体网站| 亚洲欧美激情小说另类| 精品在线视频免费| 在线视频国产一区| av天堂一区二区三区| 亚洲精品720p| 日本在线免费中文字幕| 欧美精品激情在线观看| 香蕉成人av| 91九色对白| 深夜福利久久| 超碰人人爱人人| 日韩主播视频在线| 97超碰免费在线观看| 成人精品免费看| 成人信息集中地| 五月婷婷激情综合网| 亚洲中文字幕在线一区| 亚洲精品国产综合区久久久久久久 | 亚洲精品一区二区三区四区高清| 国产色在线 com| 久久欧美在线电影| 4438五月综合| 欧美高清视频一区| 狠狠色丁香久久综合频道| 制服丝袜综合网| 91网站视频在线观看| 亚洲国产精品免费在线观看| 91精品福利在线| 人妻妺妺窝人体色www聚色窝| 色99之美女主播在线视频| 日本一级大毛片a一| 狠狠色狠狠色综合日日91app| 亚洲av成人片无码| 亚洲天堂2014| 久久久久精彩视频| 日韩av最新在线观看| 污污视频在线| 国产啪精品视频网站| 国产精品亚洲二区| 可以在线看的av网站| 国产精品亚洲午夜一区二区三区| 永久免费毛片在线观看| 粉嫩av一区二区三区免费野| 亚洲av无码片一区二区三区| 久久久精品国产亚洲| 草莓视频成人appios| 免费国产在线精品一区二区三区| 国内揄拍国内精品久久| 日本一级淫片演员| 日韩极品在线观看| 醉酒壮男gay强迫野外xx| 亚洲主播在线观看| 国产福利小视频| 久久精品视频导航| 欧美成人毛片| 五月天色一区| 日韩福利电影在线观看| 波多野结衣av在线观看| 狠狠做深爱婷婷久久综合一区 | 色综合久久中文综合久久97| 国产1区在线观看| 色综合男人天堂| 日韩区欧美区| 国产91沈先生在线播放| 懂色av一区二区在线播放| 青娱乐91视频| 精品日韩av一区二区| 免费污视频在线观看| 粉嫩av一区二区三区免费观看| 欧美激情91| 日本在线不卡一区二区| www国产成人| 国产精品久久久久久久久久久久久久久久久| 精品人在线二区三区| 999精品网| 激情伦成人综合小说| 国产精品久久久久久久久久妞妞| 激情综合丁香五月| 色综合天天做天天爱| 成全电影播放在线观看国语| 国产精品视频一区国模私拍| 999精品一区| 四虎国产精品永久免费观看视频| 亚洲一区自拍偷拍| 日韩一级片免费观看| 欧美综合国产精品久久丁香| 激情五月色综合国产精品| 日本免费色视频| 久久国产精品99久久人人澡| 天天操天天摸天天舔| 亚洲激情校园春色| 婷婷在线观看视频| 日韩美女在线播放| 国产精品传媒精东影业在线| 麻豆av免费看| 色综合咪咪久久| 黄色网址在线免费观看| 国产成人免费观看| 日日夜夜免费精品| www欧美com| 日韩成人在线播放| 欧美高清xxx| www.国产在线播放| 久久精品国产久精国产| 国产精品白丝喷水在线观看| 亚洲第一色在线| 日韩天堂在线| 成人av在线播放观看| 不卡视频一二三| 在线观看中文字幕码| 午夜美女久久久久爽久久| 精品国产一区二区三区av片| 日本wwww色| 欧美伊人久久大香线蕉综合69| 亚洲性图自拍| 日韩av一级大片| 国产91丝袜在线播放0|