其他內(nèi)存相關(guān)知識(shí)——Linux內(nèi)存管理小結(jié)三

【Overcommit和OOM】

?????? ?在Unix中蜕企,當(dāng)一個(gè)用戶進(jìn)程使用malloc()函數(shù)申請(qǐng)內(nèi)存時(shí)奋构,假如返回值是NULL,說(shuō)明當(dāng)前系統(tǒng)沒有足夠的可用內(nèi)存桃笙。一般程序都會(huì)判斷malloc返回值是null時(shí)便報(bào)錯(cuò)退出虚循。

? ?????因?yàn)檫M(jìn)程申請(qǐng)內(nèi)存后,可能并不會(huì)馬上使用內(nèi)存泉沾。所以有時(shí)候,為了系統(tǒng)能夠運(yùn)行更多的程序聋伦,它可以對(duì)于超出自身剩余內(nèi)存的malloc請(qǐng)求也返回成功。這種行為叫做Overcommit衙解。

? ? ? ?Linux下overcommit有三種策略:

?????? ??0. 啟發(fā)式策略荐绝。合理的overcommit會(huì)被接受,不合理的overcommit會(huì)被拒絕。?

????? ? ?1. 任何overcommit都會(huì)被接受。?

????? ? ?2. 當(dāng)系統(tǒng)分配的內(nèi)存超過(guò)swap+N%*物理RAM(N%由vm.overcommit_ratio決定)時(shí)愧旦,會(huì)拒絕commit遭庶。?

? ????? Overcommit采用哪種策略可以通過(guò)/proc/sys/vm/overcommit_memory設(shè)置(可將該參數(shù)設(shè)置為0/1/2权埠,對(duì)應(yīng)上面3中策略)叔扼。 ? ? Overcommit的百分比由vm.overcommit_ratio設(shè)置。如:

? ?# echo 2 > /proc/sys/vm/overcommit_memory????

? ?# echo 60 > /proc/sys/vm/overcommit_ratio

【大頁(yè)內(nèi)存與快表TLB】

? ?????進(jìn)程訪問(wèn)內(nèi)存時(shí),傳遞給CPU的是進(jìn)程的虛擬內(nèi)存地址丑念,CPU需要將虛擬內(nèi)存轉(zhuǎn)換為物理內(nèi)存地址,再去物理內(nèi)存獲取數(shù)據(jù)。從虛擬內(nèi)存到物理內(nèi)存的映射就依賴頁(yè)表。

? ? ? ?頁(yè)表是保存在物理內(nèi)存中的一個(gè)頁(yè)表?xiàng)l目集合事富。如果要訪問(wèn)的虛擬內(nèi)存頁(yè)之前已經(jīng)映射到了物理內(nèi)存,則該映射關(guān)系會(huì)被記錄到頁(yè)表中流部。后續(xù)再訪問(wèn)該虛擬內(nèi)存地址時(shí)戚绕,CPU會(huì)通過(guò)頁(yè)表中查找到的映射關(guān)系得到對(duì)應(yīng)的物理地址;如果映射關(guān)系不存在枝冀,那么就會(huì)發(fā)生缺頁(yè)中斷舞丛,中斷處理程序會(huì)完成虛擬內(nèi)存到物理內(nèi)存你的映射耘子,并記錄到頁(yè)表中以供后續(xù)查詢。

? ? ? ?但是內(nèi)存的處理速度相比CPU來(lái)說(shuō)還是慢很多球切。如果CPU每次訪問(wèn)內(nèi)存都要查詢頁(yè)表去獲取映射關(guān)系谷誓,那么必然會(huì)對(duì)性能產(chǎn)生較大的影響。TLB就是為了解決這個(gè)問(wèn)題出現(xiàn)的吨凑。

? ?????TLB(Translation Lookaside Buffer),旁路緩沖器,又稱快表捍歪。TLB的作用是作為內(nèi)存頁(yè)表的緩沖。它是CPU中的一個(gè)內(nèi)存管理單元怀骤,訪問(wèn)速度會(huì)和CPU處于一個(gè)量級(jí)费封,遠(yuǎn)高于內(nèi)存焕妙。CPU需要獲取內(nèi)存映射時(shí)蒋伦,就會(huì)先去訪問(wèn)TLB,如果TLB中已經(jīng)緩存了所需的地址映射焚鹊,那么就稱為TLB命中痕届,這樣CPU就可以很快的得到虛擬地址對(duì)應(yīng)的物理地址,減少了對(duì)實(shí)際內(nèi)存頁(yè)表的訪問(wèn)末患,提高了效率研叫。(實(shí)際上TLB后面還有多級(jí)的高速緩存,最后才是到實(shí)際內(nèi)存)

? ? ? ? ?而由于成本等因素限制璧针,TLB不可能做的很大嚷炉,一般只能緩存512個(gè)頁(yè)表項(xiàng),也就是記錄512個(gè)虛擬內(nèi)存頁(yè)到物理內(nèi)存頁(yè)的映射關(guān)系探橱。一般情況下申屹,操作系統(tǒng)的默認(rèn)內(nèi)存頁(yè)大小為4K。這樣的話隧膏,TLB中能緩存的最多也就只有2M的內(nèi)存映射關(guān)系哗讥。如果訪問(wèn)這2M的內(nèi)存,TLB可以命中胞枕,那么CPU可以很快的獲取映射關(guān)系杆煞;如果訪問(wèn)這2M以外的內(nèi)存,那么TLB的作用就失去了腐泻。為了充分發(fā)揮TLB的作用决乎,就引入了大頁(yè)內(nèi)存。

????? ? 大頁(yè)內(nèi)存(HugePages)的思想就是通過(guò)增大內(nèi)存頁(yè)的大小派桩,來(lái)增加TLB中緩存的內(nèi)存大小瑞驱,從而增加TLB命中的概率,提高性能窄坦。比如將內(nèi)存頁(yè)的大小從4K增大到2M唤反,那么TLB中512個(gè)頁(yè)表項(xiàng)就能緩存1G內(nèi)存地址空間的映射凳寺,這樣相比原來(lái)的2M,TLB命中的概率大大增加彤侍。

? ??????大頁(yè)內(nèi)存可以在/proc/meminfo中查看肠缨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盏阶,隨后出現(xiàn)的幾起案子晒奕,更是在濱河造成了極大的恐慌,老刑警劉巖名斟,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脑慧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡砰盐,警方通過(guò)查閱死者的電腦和手機(jī)闷袒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岩梳,“玉大人囊骤,你說(shuō)我怎么就攤上這事〖街担” “怎么了也物?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)列疗。 經(jīng)常有香客問(wèn)我滑蚯,道長(zhǎng),這世上最難降的妖魔是什么抵栈? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任告材,我火速辦了婚禮,結(jié)果婚禮上竭讳,老公的妹妹穿的比我還像新娘创葡。我一直安慰自己,他們只是感情好绢慢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布灿渴。 她就那樣靜靜地躺著,像睡著了一般胰舆。 火紅的嫁衣襯著肌膚如雪骚露。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天缚窿,我揣著相機(jī)與錄音棘幸,去河邊找鬼。 笑死倦零,一個(gè)胖子當(dāng)著我的面吹牛误续,可吹牛的內(nèi)容都是我干的吨悍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蹋嵌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼育瓜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起栽烂,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躏仇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腺办,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焰手,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年怀喉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了书妻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磺送,死狀恐怖驻子,靈堂內(nèi)的尸體忽然破棺而出灿意,到底是詐尸還是另有隱情估灿,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布缤剧,位于F島的核電站馅袁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荒辕。R本人自食惡果不足惜汗销,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抵窒。 院中可真熱鬧弛针,春花似錦、人聲如沸李皇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)掉房。三九已至茧跋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卓囚,已是汗流浹背瘾杭。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哪亿,地道東北人粥烁。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓贤笆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親讨阻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苏潜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容