日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux kernel内存回收机制

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux kernel内存回收机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.wowotech.net/linux_kenrel/233.html

無論計算機上有多少內存都是不夠的,因而linux kernel需要回收一些很少使用的內存頁面來保證系統持續有內存使用。頁面回收的方式有頁回寫、頁交換和頁丟棄三種方式:如果一個很少使用的頁的后備存儲器是一個塊設備(例如文件映射),則可以將內存直接同步到塊設備,騰出的頁面可以被重用;如果頁面沒有后備存儲器,則可以交換到特定swap分區,再次被訪問時再交換回內存;如果頁面的后備存儲器是一個文件,但文件內容在內存不能被修改(例如可執行文件),那么在當前不需要的情況下可直接丟棄。

1?回收的時機

2?哪些內存可以回收

2.1?頁框的回收

LRU(Least Recently Used),近期最少使用鏈表,是按照近期的使用情況排列的,最少使用的存在鏈表末尾,通過以下宏定義即可看出:

#define lru_to_page(_head) (list_entry((_head)->prev, struct page, lru))

每個zone有5個LRU鏈表用以存放各種最近使用狀態的頁面。

enum lru_list {

???????? LRU_INACTIVE_ANON = LRU_BASE,

???????? LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE,

???????? LRU_INACTIVE_FILE = LRU_BASE + LRU_FILE,

???????? LRU_ACTIVE_FILE = LRU_BASE + LRU_FILE + LRU_ACTIVE,

???????? LRU_UNEVICTABLE,

???????? NR_LRU_LISTS

};

其中INACTIVE_ANON、ACTIVE_ANON、INACTIVE_FILE、ACTIVE_FILE 4個鏈表中的頁面是可以回收的。ANON代表匿名映射,沒有后備存儲器;FILE代表文件映射。

頁面回收時,會優先回收INACTIVE的頁面,只有當INACTIVE頁面很少時,才會考慮回收ACTIVE頁面。

為了評估頁的活動程度,kernel引入了PG_referend和PG_active兩個標志位。為什么需要兩個位呢?假定只使用一個PG_active來標識頁是否活動,在頁被訪問時,設置該位,但是何時清除呢?為此需要維護大量的內核定時器,這種方法注定是要失敗的。

使用兩個標志,可以實現一種更精巧的方法,其核心思想是:一個表示當前活動程度,一個表示最近是否被引用過,下圖說明了基本算法。

基本上有以下步驟:

(1)如果頁是活動的,設置PG_active位,并保存在ACTIVE LRU鏈表;反之在INACTIVE;

(2)每次訪問頁時,設置PG_referenced位,負責該工作的是mark_page_accessed函數;

(3)PG_referenced以及由逆向映射提供的信息用來確定頁面活動程度,每次清除該位時,都會檢測頁面活動程度,page_referenced函數實現了該行為;

(4)再次進入mark_page_accessed。如果發現PG_referenced已被置位,意味著page_referenced沒有執行檢查,因而對于mark_page_accessed的調用比page_referenced更頻繁,這意味著頁面經常被訪問。如果該頁位于INACTIVE鏈表,將其移動到ACTIVE,此外還會設置PG_active標志位,清除PG_referenced;

(5)反向的轉移也是有可能的,在頁面活動程度減少時,可能連續調用兩次page_referenced而中間沒有mark_page_accessed。

如果對內存頁的訪問是穩定的,那么對page_referenced和mark_page_accessed的調用在本質上是均衡的,因而頁面保持在當前LRU鏈表。這種方案同時確保了內存頁不會再ACTIVE與INACTIVE鏈表間快速跳躍。

2.2 slab緩存回收

slab緩存回收相對比較靈活,所有注冊到shrinker_list中的方法都會被執行。

內核默認針對每個文件系統都注冊了prune_super方法,這個函數用來回收文件系統中不再使用的dentry和inode緩存;

android的lowmemorykiller機制注冊了選擇性殺死進程的方法,回收進程使用的內存。

3怎樣回收頁框

其中shrink_page_list是真正回收頁面的過程



4周期性回收的頻率

4.1 kswapd

kswapd是內核為每個內存node創建的內存回收線程,為什么有了緊缺回收機制還需要周期性回收呢?因為有些內存分配是不允許阻塞等待回收的,比如中斷和異常處理程序中的內存分配;還有些內存分配不允許激活I/O訪問的。只有少數情況的內存緊缺可以完整執行回收過程,所以利用系統空閑時間回收內存非常必要。

該函數記錄了上一次均衡操作時所用的分配order,如果kswapd_max_order大于上一次的值,或者classzone_idx小于上一次的值,則調用balanc

無論計算機上有多少內存都是不夠的,因而linux kernel需要回收一些很少使用的內存頁面來保證系統持續有內存使用。頁面回收的方式有頁回寫、頁交換和頁丟棄三種方式:如果一個很少使用的頁的后備存儲器是一個塊設備(例如文件映射),則可以將內存直接同步到塊設備,騰出的頁面可以被重用;如果頁面沒有后備存儲器,則可以交換到特定swap分區,再次被訪問時再交換回內存;如果頁面的后備存儲器是一個文件,但文件內容在內存不能被修改(例如可執行文件),那么在當前不需要的情況下可直接丟棄。

4.2 cache_reap

cache_reap用來回收slab中的空閑對象,如果空閑對象可以還原成一個頁面,則釋放回buddy system。每次調用cache_reap會把所有的slab_caches遍歷一遍,之后休眠2*HZ,對于arm(HZ=100)來說,周期就是20ms。

5?參考文獻

(1)《understanding the linux kernel》

(2)《professional linux kernel architecture》

總結

以上是生活随笔為你收集整理的linux kernel内存回收机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费人成年激情视频在线观看 | 精品视频一区二区在线观看 | 国产一级黄色大片 | 精品视频在线观看一区二区 | 日韩中文字幕视频在线观看 | 国产熟妇乱xxxxx大屁股网 | 国产福利片一区二区 | 日本少妇高潮抽搐 | 巨胸喷奶水www久久久免费动漫 | 精品一区二区亚洲 | 香蕉久久久 | 久久精品屋 | 久久国产精品毛片 | 中文字幕无码乱码人妻日韩精品 | 曰批又黄又爽免费视频 | 国产成人a v| 蜜臀久久99精品久久久无需会员 | av最新资源 | 欧美精品亚洲精品日韩精品 | 亚洲一区免费视频 | 中文字幕在线播放一区二区 | 久久久久久久av | 欧美三级在线 | 欧美日韩国产免费一区二区三区 | 91精品国产自产91精品 | 国产成人自拍视频在线 | 97超碰站| 精品国产三级片在线观看 | 亚洲一区二区网站 | 日本高清无吗 | 欧美乱妇18p | 另类小说色 | 影音先锋制服丝袜 | 秋霞网一区二区 | 色综合av| 国产极品视频在线观看 | 男女午夜视频 | 黑花全肉高h湿play短篇 | 韩国特级毛片 | 日韩视频免费观看高清完整版在线观看 | 杂技xxx裸体xxxx欧美 | 毛片av在线播放 | 亚洲一区不卡 | 成人午夜免费毛片 | 国产黄色a | 男女超爽视频免费播放 | 国产一区二区 | 欧美整片第一页 | 日本免费一二区 | 黄色1级大片 | 91视频论坛 | 久久精品a亚洲国产v高清不卡 | 成人不卡| 亚洲一卡二卡三卡 | 亚洲最大在线视频 | 黄色美女大片 | 免费小视频 | 国产免费视频一区二区三区 | 午夜67194| 小日子的在线观看免费第8集 | 国内三级视频 | 国产超91 | www.欧美激情 | 国产精品自拍网 | 欧美日韩99 | 福利在线免费观看 | 人妻精品无码一区二区三区 | 五月婷婷色| 国产一区二区三区四区五区美女 | 黑人精品无码一区二区三区 | 日韩av视屏 | mm1313亚洲国产精品美女 | 精品国产乱码久久久久久蜜臀 | 深夜精品视频 | 911香蕉视频| 在线视频网站 | 日本女v片| 日韩欧美中文字幕一区 | 性大毛片视频 | 日本亚洲一区 | 亚洲天堂五月天 | 精品九九在线 | 看黄色一级大片 | 亚洲啪啪网 | 97在线免费观看 | 色婷婷一区二区三区 | 爽爽影院免费观看 | 国产三级三级三级 | 国产普通话bbwbbwbbw | 美女精品久久 | 最近中文字幕免费视频 | 国产一区二区三区在线播放无 | 成人一级黄色 | 极品少妇xxxx精品少妇 | a级在线免费观看 | 亚洲av少妇一区二区在线观看 | 一卡二卡在线 | 无码人妻精品一区二区蜜桃网站 | 激情视频在线播放 |