亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

分配內存時如何減少內存碎片

2024-06-28 13:23:58
字體:
來源:轉載
供稿:網友
分配內存時如何減少內存碎片

  感覺面試的時候經常會被問到這個問題,然后我也學習了一下Memcached的slab機制,發現很多服務器都是使用這種機制來分配內存,所以決定學習一下。

  首先,先對內存分配中的伙伴系統有初步的了解:

  在編程和使用的服務器軟件中,經常需要分配一組連續的頁框,而頻繁地申請和釋放不同大小的連續頁框,必然導致在已分配頁框的內存塊中分散了許多小塊的空閑頁框。這樣,即使這些頁框是空閑的,但要分配一個大塊的連續頁框就可能無法滿足?! 《鴏inux采用了伙伴系統來解決上述難題。把所有的空閑頁框分組為11個塊鏈表,每個塊鏈表分別包含大小為1,2,4,8,16,32,64,128,256,512和1024個連續頁框的頁框塊。最大可以申請1024個連續頁框,對應4MB大小的連續內存。每個頁框塊的第一個頁框的物理地址是該塊大小的整數倍。例如,大小為16個頁框的塊,其起始地址是16×212的倍數。假設要申請一個256個頁框的塊,先從256個頁框的鏈表中查找空閑塊,如果沒有,就去512個頁框的鏈表中找,找到了則將頁框塊分為2個256個頁框的塊,一個分配給應用,另外一個移到256個頁框的鏈表中。如果512個頁框的鏈表中仍沒有空閑塊,繼續向1024個頁框的鏈表查找,如果仍然沒有,則返回錯誤。頁框塊在釋放時,內核會主動將兩個互為伙伴的頁框塊合并為一個較大的頁框塊,成功后會試圖尋找伙伴并合并為更大的內存塊,直至塊的大小超過上限或者沒有伙伴為止?;榛锇榈膬蓚€內存塊必須符合以下條件:  1、兩個塊具有相同的大小;  2、兩個塊的物理地址連續;  3、第一個快的物理地址是兩個塊大小的整數倍。  slab分配機制則是對伙伴算法的改進,slab(Slab Allocation)的設計理念是基于對象緩沖的,基本想法是避免重復大量的初始化和清理操作。slab主要可以用于頻繁非配釋放的內存對象。替代malloc/free  改進的地方在于:

  它對內存區的處理并不需要進行初始化或回收。出于效率的考慮,Linux并不調用對象的構造或析構函數,而是把指向這兩個函數的指針都置為空。Linux中引入Slab的主要目的是為了減少對伙伴算法的調用次數。

實際上,內核經常反復使用某一內存區。例如,只要內核創建一個新的進程,就要為該進程相關的數據結構(task_struct、打開文件對象等)分配內存區。當進程結束時,收回這些內存區。因為進程的創建和撤銷非常頻繁,因此,Linux的早期版本把大量的時間花費在反復分配或回收這些內存區上。從Linux2.2開始,把那些頻繁使用的頁面保存在高速緩存中并重新使用??梢愿鶕却鎱^的使用頻率來對它分類。對于預期頻繁使用的內存區,可以創建一組特定大小的專用緩沖區進行處理,以避免內碎片的產生。對于較少使用的內存區,可以創建一組通用緩沖區(如Linux2.0中所使用的2的冪次方)來處理,即使這種處理模式產生碎片,也對整個系統的性能影響不大。

硬件高速緩存的使用,又為盡量減少對伙伴算法的調用提供了另一個理由,因為對伙伴算法的每次調用都會“弄臟”硬件高速緩存,因此,這就增加了對內存的平均訪問次數。

Slab分配模式把對象分組放進緩沖區

    對于小對象, 就把Slab的描述結構slab_t放在該Slab中;對于大對象,則把Slab結構游離出來,集中存放。關于Slab中的著色區再給予具體描述: 每個Slab的首部都有一個小小的區域是不用的,稱為“著色區(coloring area)”。著色區的大小使Slab中的每個對象的起始地址都按高速緩存中的”緩存行(cache line)”大小進行對齊(80386的一級高速緩存行大小為16字節,Pentium為32字節)。因為Slab是由1個頁面或多個頁面(最多為32)組成,因此,每個Slab都是從一個頁面邊界開始的,它自然按高速緩存的緩沖行對齊。但是,Slab中的對象大小不確定,設置著色區的目的就是將Slab中第一個對象的起始地址往后推到與緩沖行對齊的位置。因為一個緩沖區中有多個Slab,因此,應該把每個緩沖區中的各個Slab著色區的大小盡量安排成不同的大小,這樣可以使得在不同的Slab中,處于同一相對位置的對象,讓它們在高速緩存中的起始地址相互錯開,這樣就可以改善高速緩存的存取效率。 每個Slab上最后一個對象以后也有個小小的廢料區是不用的,這是對著色區大小的補償,其大小取決于著色區的大小,以及Slab與其每個對象的相對大小。但該區域與著色區的總和對于同一種對象的各個Slab是個常數。 每個對象的大小基本上是所需數據結構的大小。只有當數據結構的大小不與高速緩存中的緩沖行對齊時,才增加若干字節使其對齊。所以,一個Slab上的所有對象的起始地址都必然是按高速緩存中的緩沖行對齊的。參考:深入分析Linux內核源碼http://oss.org.cn/kernel-book/   Memcached 源碼分析
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂久久av| 国产成人在线视频| 亚洲女人被黑人巨大进入| 久久精品国产久精国产一老狼| 91成人天堂久久成人| 国产精品高清网站| 国产精品福利网| 国模gogo一区二区大胆私拍| 亚洲天堂网在线观看| 欧美专区第一页| 1769国内精品视频在线播放| 色哟哟网站入口亚洲精品| 欧美日韩高清在线观看| 欧美人与性动交| 日韩成人在线视频网站| 亚洲毛片在线看| 亚洲人在线视频| 亚洲乱码国产乱码精品精| 亚洲精品免费网站| 国产欧美日韩中文字幕在线| 日韩福利视频在线观看| 亚洲成人xxx| 成人福利免费观看| 欧美日韩性视频| 久久国产一区二区三区| 亚洲少妇中文在线| 91精品国产91| 91精品视频大全| 97人洗澡人人免费公开视频碰碰碰| 国产97在线|日韩| 高清欧美性猛交xxxx| 欧美激情亚洲自拍| 北条麻妃久久精品| 丝袜亚洲另类欧美重口| 成人性教育视频在线观看| 国产精品老女人精品视频| 中文字幕亚洲二区| 成人欧美在线视频| 欧美一级淫片aaaaaaa视频| 激情懂色av一区av二区av| 久久91超碰青草是什么| 国产香蕉一区二区三区在线视频| 欧美精品成人在线| 亚洲午夜久久久久久久| 久久久久久久久国产精品| 黑人巨大精品欧美一区二区一视频| 国产高清视频一区三区| 91精品免费看| 日韩人体视频一二区| 欧美国产极速在线| 国产日韩欧美自拍| 欧美视频在线免费| 国产精品无码专区在线观看| 国产999精品久久久影片官网| 久久人人爽人人爽人人片亚洲| 欧美二区在线播放| 亚洲国产高清高潮精品美女| 在线观看国产欧美| 日韩电视剧在线观看免费网站| 久久777国产线看观看精品| 日韩在线免费视频| 黄色91在线观看| 日韩视频在线免费观看| 欧美另类老女人| 久久视频国产精品免费视频在线| 国产精品网站入口| 亚洲在线www| 国产精品免费久久久| 亚洲男人天堂九九视频| 精品日本美女福利在线观看| 综合激情国产一区| 国产精品va在线播放我和闺蜜| 日日摸夜夜添一区| 57pao成人永久免费视频| 77777亚洲午夜久久多人| 色偷偷偷综合中文字幕;dd| 亚洲国产精品yw在线观看| 久久综合久久美利坚合众国| 国模精品一区二区三区色天香| 亚洲精品第一国产综合精品| 日韩成人激情影院| 97在线精品国自产拍中文| 国产精品电影在线观看| 91精品久久久久久久久久另类| 日韩亚洲成人av在线| 欧美一区三区三区高中清蜜桃| 在线播放国产一区中文字幕剧情欧美| 九九久久国产精品| 日本一区二区三区四区视频| 亚洲福利视频专区| 成人午夜一级二级三级| 中文字幕在线看视频国产欧美| 色综合五月天导航| 欧美裸身视频免费观看| 海角国产乱辈乱精品视频| 欧美日韩在线另类| 91久久久精品| 欧美成aaa人片在线观看蜜臀| 在线国产精品视频| 国产97色在线|日韩| 精品丝袜一区二区三区| 亚洲一区美女视频在线观看免费| 欧美肥婆姓交大片| 51精品在线观看| 欧美成人精品影院| 国产成+人+综合+亚洲欧洲| 国产日韩欧美在线观看| 91精品免费看| 插插插亚洲综合网| 亚洲国产成人爱av在线播放| 日韩欧美精品免费在线| 在线视频精品一| 欧美一级大片视频| 欧美亚洲日本黄色| 欧美日韩国产丝袜另类| 成人动漫网站在线观看| 欧美一级在线亚洲天堂| 91精品啪在线观看麻豆免费| 亚洲丝袜在线视频| 日韩在线播放一区| 欧美精品激情视频| 91在线播放国产| 亚洲va欧美va国产综合久久| 欧美一级片免费在线| 亚洲va电影大全| 伊人久久免费视频| 国产精品三级在线| 国产精品wwww| 欧美激情成人在线视频| 精品福利在线观看| 亚洲欧美日韩久久久久久| 国产精品久久久久久久av大片| 久久久久久久久久av| 最近的2019中文字幕免费一页| 欧美午夜精品久久久久久人妖| 亚洲男人的天堂网站| 日韩在线视频免费观看| 亚洲欧美自拍一区| 国产成人在线精品| 国产精品综合网站| 亚洲成年人影院在线| 欧美电影电视剧在线观看| 高清日韩电视剧大全免费播放在线观看| 国产欧美日韩亚洲精品| 97视频在线观看网址| 高清一区二区三区四区五区| 欧美精品日韩www.p站| 亚洲天堂视频在线观看| 亚洲天堂成人在线| 精品国产乱码久久久久久婷婷| 国产精选久久久久久| 精品国产老师黑色丝袜高跟鞋| 国产精品一区二区久久国产| 久热精品视频在线免费观看| 亚洲有声小说3d| 精品久久久久久久久国产字幕| 欧美肥臀大乳一区二区免费视频| 亚洲欧美日韩在线高清直播| 欧美疯狂xxxx大交乱88av| 午夜欧美大片免费观看| 亚洲最新中文字幕| 亚洲国产91精品在线观看| 亚洲欧美国内爽妇网| 欧美激情精品久久久|