圖解|透明大頁(yè)原理與實(shí)現(xiàn)
在《圖解|Linux大內(nèi)存頁(yè)原理》一文中,我們介紹過(guò)標(biāo)準(zhǔn)大頁(yè)的原理與其優(yōu)點(diǎn),現(xiàn)在我們回顧一下標(biāo)準(zhǔn)大頁(yè)有哪些優(yōu)點(diǎn):
(相關(guān)資料圖)
可以看出,使用大頁(yè)能夠加速系統(tǒng)的運(yùn)行效率。
但是標(biāo)準(zhǔn)大頁(yè)使用起來(lái)比較麻煩,需要掛載 Hugetlb 文件系統(tǒng),并且需要使用 mmap 系統(tǒng)調(diào)用來(lái)對(duì)大頁(yè)進(jìn)行映射。為了解決標(biāo)準(zhǔn)大頁(yè)使用麻煩的問(wèn)題,紅帽子(Red Hat)公司開(kāi)發(fā)出透明大頁(yè)(Transparent Huge Pages,THP)功能。
要使用透明大頁(yè)功能,只需要使用以下命令開(kāi)啟即可:
echoalways>/sys/kernel/mm/transparent_hugepage/enabled
開(kāi)啟了透明大頁(yè)功能后,內(nèi)核將會(huì)創(chuàng)建一個(gè)名為khugepaged的內(nèi)核線程。
khugepaged內(nèi)核線程會(huì)不斷掃描進(jìn)程的虛擬內(nèi)存空間(vma,virtual memory area),如果發(fā)現(xiàn)存在 2MB 地址連續(xù)的虛擬地址空間,那么判斷其是否滿足轉(zhuǎn)換成大頁(yè)的條件,如果滿足則將這些物理內(nèi)存合并成一個(gè)大頁(yè)。如下圖所示:
相對(duì)于使用繁瑣的標(biāo)準(zhǔn)大頁(yè),透明大頁(yè)顯得更加友好。
透明大頁(yè)原理操作系統(tǒng)管理內(nèi)存時(shí),是以頁(yè)作為單位的,常用的頁(yè)大小有4KB、2MB和1GB。4KB 的內(nèi)存頁(yè)被稱為普通內(nèi)存頁(yè),而 2MB 和 1GB 的內(nèi)存頁(yè)被稱為大頁(yè)。
通常來(lái)說(shuō),4KB 的內(nèi)存頁(yè)使用頻率最多,但有時(shí)候?yàn)榱藴p少缺頁(yè)異常發(fā)生的次數(shù)(提升程序的性能),所以會(huì)使用 2MB 或者 1GB 的內(nèi)存頁(yè)來(lái)代替 4KB 的內(nèi)存頁(yè)。
透明大頁(yè)核心思想透明大頁(yè)的核心思想很簡(jiǎn)單:不斷掃描進(jìn)程的虛擬內(nèi)存區(qū)間(vma),如果發(fā)現(xiàn)大小超過(guò) 2MB 的內(nèi)存區(qū)間,將會(huì)判斷其是否滿足轉(zhuǎn)換成大頁(yè)的條件,如果滿足則將這些物理內(nèi)存合并成一個(gè)大頁(yè)。
我們知道每個(gè)進(jìn)程都有一個(gè) mm_struct 結(jié)構(gòu),用來(lái)管理進(jìn)程的虛擬內(nèi)存空間和映射物理地址的頁(yè)表等信息,而虛擬內(nèi)存的區(qū)間是通過(guò) vm_area_struct 結(jié)構(gòu)(vma)來(lái)管理的。
透明大頁(yè)的核心邏輯步驟:
查找滿足轉(zhuǎn)換成大頁(yè)的內(nèi)存區(qū)間khugepaged內(nèi)核線程會(huì)掃描進(jìn)程的虛擬內(nèi)存空間,如果發(fā)現(xiàn)內(nèi)存區(qū)間大于等于 2MB,并且滿足轉(zhuǎn)換成大頁(yè)的條件,那么將會(huì)進(jìn)入下面的步驟。
相關(guān)閱讀
-
圖解|透明大頁(yè)原理與實(shí)現(xiàn)
在《圖解|Linux大內(nèi)存頁(yè)原理》一文中,我們介紹過(guò)標(biāo)準(zhǔn)大頁(yè)的原理與... -
難受的這兩天,你們?cè)趺礃樱?/a>
12月23號(hào)周五,下班回來(lái)小云說(shuō)中午下樓買菜碰到小區(qū)認(rèn)識(shí)的一個(gè)媽媽... -
超越ConvNeXt!Transformer 風(fēng)格的卷積...
↑點(diǎn)擊藍(lán)字關(guān)注極市平臺(tái)作者丨科技猛獸編輯丨極市平臺(tái)極市導(dǎo)讀本文... -
極市直播預(yù)告丨NeurIPS 2022 Oral-張...
↑點(diǎn)擊藍(lán)字關(guān)注極市平臺(tái)|極市線上分享第107期|一直以來(lái),為讓大家更... -
【天天時(shí)快訊】最大CLIP!LAION發(fā)布CLIP...
點(diǎn)藍(lán)色字關(guān)注“機(jī)器學(xué)習(xí)算法工程師”設(shè)為星標(biāo),干貨直達(dá)!近日,LAI... -
百事通!使用PyTorch 2.0 加速Hugging...
點(diǎn)藍(lán)色字關(guān)注“機(jī)器學(xué)習(xí)算法工程師”設(shè)為星標(biāo),干貨直達(dá)!?PyTorch...