精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文讀懂 HugePages(大內存頁)的原理

系統 Linux
在介紹 HugePages 之前,我們先來回顧一下 Linux 下 虛擬內存 與 物理內存 之間的關系。

 [[397159]]

在介紹 HugePages 之前,我們先來回顧一下 Linux 下 虛擬內存 與 物理內存 之間的關系。

  • 物理內存:也就是安裝在計算機中的內存條,比如安裝了 2GB 大小的內存條,那么物理內存地址的范圍就是 0 ~ 2GB。
  • 虛擬內存:虛擬的內存地址。由于 CPU 只能使用物理內存地址,所以需要將虛擬內存地址轉換為物理內存地址才能被 CPU 使用,這個轉換過程由 MMU(Memory Management Unit,內存管理單元) 來完成。在 32 位的操作系統中,虛擬內存空間大小為 0 ~ 4GB。

我們通過 圖1 來描述虛擬內存地址轉換成物理內存地址的過程:

如 圖1 所示,頁表 保存的是虛擬內存地址與物理內存地址的映射關系,MMU 從 頁表 中找到虛擬內存地址所映射的物理內存地址,然后把物理內存地址提交給 CPU,這個過程與 Hash 算法相似。

內存映射是以內存頁作為單位的,通常情況下,一個內存頁的大小為 4KB(如圖1所示),所以稱為 分頁機制。

一、內存映射

我們來看看在 64 位的 Linux 系統中(英特爾 x64 CPU),虛擬內存地址轉換成物理內存地址的過程,如圖2:

從圖2可以看出,Linux 只使用了 64 位虛擬內存地址的前 48 位(0 ~ 47位),并且 Linux 把這 48 位虛擬內存地址分為 5 個部分,如下:

  • PGD索引:39 ~ 47 位(共9個位),指定在 頁全局目錄(PGD,Page Global Directory)中的索引。
  • PUD索引:30 ~ 38 位(共9個位),指定在 頁上級目錄(PUD,Page Upper Directory)中的索引。
  • PMD索引:21 ~ 29 位(共9個位),指定在 頁中間目錄(PMD,Page Middle Directory)中的索引。
  • PTE索引:12 ~ 20 位(共9個位),指定在 頁表(PT,Page Table)中的索引。
  • 偏移量:0 ~ 11 位(共12個位),指定在物理內存頁中的偏移量。

把 圖1 中的 頁表 分為 4 級:頁全局目錄、頁上級目錄、頁中間目錄 和 頁表 目的是為了減少內存消耗(思考下為什么可以減少內存消耗)。

注意:頁全局目錄、頁上級目錄、頁中間目錄 和 頁表 都占用一個 4KB 大小的物理內存頁,由于 64 位內存地址占用 8 個字節,所以一個 4KB 大小的物理內存頁可以容納 512 個 64 位內存地址。

另外,CPU 有個名為 CR3 的寄存器,用于保存 頁全局目錄 的起始物理內存地址(如圖2所示)。所以,虛擬內存地址轉換成物理內存地址的過程如下:

  • 從 CR3 寄存器中獲取 頁全局目錄 的物理內存地址,然后以虛擬內存地址的 39 ~ 47 位作為索引,從 頁全局目錄 中讀取到 頁上級目錄 的物理內存地址。
  • 以虛擬內存地址的 30 ~ 38 位作為索引,從 頁上級目錄 中讀取到 頁中間目錄 的物理內存地址。
  • 以虛擬內存地址的 21 ~ 29 位作為索引,從 頁中間目錄 中讀取到 頁表 的物理內存地址。
  • 以虛擬內存地址的 12 ~ 20 位作為索引,從 頁表 中讀取到 物理內存頁 的物理內存地址。
  • 以虛擬內存地址的 0 ~ 11 位作為 物理內存頁 的偏移量,得到最終的物理內存地址。

二、HugePages 原理

上面介紹了以 4KB 的內存頁作為內存映射的單位,但有些場景我們希望使用更大的內存頁作為映射單位(如 2MB)。使用更大的內存頁作為映射單位有如下好處:

  • 減少 TLB(Translation Lookaside Buffer) 的失效情況。
  • 減少 頁表 的內存消耗。
  • 減少 PageFault(缺頁中斷)的次數。

Tips:TLB 是一塊高速緩存,TLB 緩存虛擬內存地址與其映射的物理內存地址。MMU 首先從 TLB 查找內存映射的關系,如果找到就不用回溯查找頁表。否則,只能根據虛擬內存地址,去頁表中查找其映射的物理內存地址。

因為映射的內存頁越大,所需要的 頁表 就越小(很容易理解);頁表 越小,TLB 失效的情況就越少。

使用大于 4KB 的內存頁作為內存映射單位的機制叫 HugePages,目前 Linux 常用的 HugePages 大小為 2MB 和 1GB,我們以 2MB 大小的內存頁作為例子。

要映射更大的內存頁,只需要增加偏移量部分,如 圖3 所示:

如 圖3 所示,現在把偏移量部分擴展到 21 位(頁表部分被覆蓋了,21 位能夠表示的大小范圍為 0 ~ 2MB),所以 頁中間目錄 直接指向映射的 物理內存頁地址。

這樣,就可以減少 頁表 部分的內存消耗。由于內存映射關系變少,所以 TLB 失效的情況也會減少。

三、HugePages 使用

了解了 HugePages 的原理后,我們來介紹一下怎么使用 HugePages。

HugePages 的使用不像普通內存申請那么簡單,而是需要借助 Hugetlb文件系統 來創建,下面將會介紹 HugePages 的使用步驟:

1. 掛載 Hugetlb 文件系統

Hugetlb 文件系統是專門為 HugePages 而創造的,我們可以通過以下命令來掛載一個 Hugetlb 文件系統:

  1. $ mkdir /mnt/huge 
  2. $ mount none /mnt/huge -t hugetlbfs 

執行完上面的命令后,我們就在 /mnt/huge 目錄下掛載了 Hugetlb 文件系統。

2. 聲明可用 HugePages 數量

要使用 HugePages,首先要向內核聲明可以使用的 HugePages 數量。/proc/sys/vm/nr_hugepages 文件保存了內核可以使用的 HugePages 數量,我們可以使用以下命令設置新的可用 HugePages 數量:

  1. $ echo 20 > /proc/sys/vm/nr_hugepages 

上面命令設置了可用的 HugePages 數量為 20 個(也就是 20 個 2MB 的內存頁)。

3. 編寫申請 HugePages 的代碼

要使用 HugePages,必須使用 mmap 系統調用把虛擬內存映射到 Hugetlb 文件系統中的文件,如下代碼:

  1. #include <fcntl.h> 
  2. #include <sys/mman.h> 
  3. #include <errno.h> 
  4. #include <stdio.h> 
  5.  
  6. #define MAP_LENGTH (10*1024*1024) // 10MB 
  7.  
  8. int main() 
  9.     int fd; 
  10.     void * addr; 
  11.  
  12.     // 1. 創建一個 Hugetlb 文件系統的文件 
  13.     fd = open("/mnt/huge/hugepage1", O_CREAT|O_RDWR); 
  14.     if (fd < 0) { 
  15.         perror("open()"); 
  16.         return -1; 
  17.     } 
  18.  
  19.     // 2. 把虛擬內存映射到 Hugetlb 文件系統的文件中 
  20.     addr = mmap(0, MAP_LENGTH, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); 
  21.     if (addr == MAP_FAILED) { 
  22.         perror("mmap()"); 
  23.         close(fd); 
  24.         unlink("/mnt/huge/hugepage1"); 
  25.         return -1; 
  26.     } 
  27.  
  28.     strcpy(addr, "This is HugePages example..."); 
  29.     printf("%s\n", addr); 
  30.  
  31.     // 3. 使用完成后,解除映射關系 
  32.     munmap(addr, MAP_LENGTH); 
  33.     close(fd); 
  34. 35    unlink("/mnt/huge/hugepage1"); 
  35. 36 
  36. 37    return 0; 
  37. 38 } 

編譯上面的代碼并且執行,如果沒有問題,將會輸出以下信息:

  1. This is HugePages example... 

四、總結

本文主要介紹了 HugePages 的原理和使用,雖然 HugePages 有很多優點,但也有其不足的地方。比如調用 fork 系統調用創建子進程時,內核使用了 寫時復制 的技術(可參考《Linux 寫時復制機制原理》一文),在父子進程內存發生改變時,需要復制更大的內存頁,從而影響性能。

責任編輯:武曉燕 來源: Linux內核那些事
相關推薦

2021-04-30 20:20:36

HugePages大內存頁系統

2022-05-12 10:53:42

keepalivevrrp協議

2021-12-16 14:45:09

https架構服務端

2025-04-07 03:02:00

電腦內存數據

2023-01-09 08:14:08

GoHttpServer

2024-11-18 11:49:51

2021-08-04 16:06:45

DataOps智領云

2023-12-22 19:59:15

2021-10-15 14:28:30

React 組件渲染

2021-10-20 07:18:51

Linux延時隊列

2022-09-22 09:00:46

CSS單位

2025-04-03 10:56:47

2018-09-28 14:06:25

前端緩存后端

2022-11-06 21:14:02

數據驅動架構數據

2021-04-24 09:02:36

Linux 內存分配

2020-10-22 09:35:11

線程池核心線程阻塞隊列

2021-09-04 19:04:14

配置LogbackJava

2025-04-30 09:12:35

2021-02-26 05:24:35

Java垃圾回收

2024-04-10 10:34:34

Cache系統GPU
點贊
收藏

51CTO技術棧公眾號

99久久综合99久久综合网站| 色天天久久综合婷婷女18| 亚洲成人免费影院| 美女视频久久| 国产乱人乱偷精品视频a人人澡| 66视频精品| 日韩成人在线视频网站| 免费看涩涩视频| 波多野在线观看| 国产日韩三级在线| 成人自拍偷拍| 怡红院男人的天堂| 亚洲国产国产亚洲一二三| 一道本无吗dⅴd在线播放一区| caoporm在线视频| 在线成人av观看| 亚洲人午夜精品天堂一二香蕉| 国产一级二级三级精品| 91片黄在线观看喷潮| 国产精品久久久久久久久久妞妞| 最近2019年好看中文字幕视频 | 先锋欧美三级| 亚洲韩国一区二区三区| 亚洲欧洲日夜超级视频| 先锋av资源站| 国产乱码精品一区二区三| 国产91色在线免费| 日韩av片在线播放| 亚洲欧美在线专区| 最近中文字幕日韩精品| 少妇光屁股影院| 永久免费精品视频| 777精品伊人久久久久大香线蕉| 国产免费黄色av| 国产精品探花在线| 一区二区三区日本| 91社在线播放| 老司机午夜在线| 国产精品日韩精品欧美在线| 欧美一区二区福利| 四虎国产精品永远| 91原创在线视频| 国产一区二区视频在线免费观看| 国产乱淫av片免费| 久久www免费人成看片高清| 国产精品久久久久久久电影| 久久久黄色大片| 国产精品永久| 秋霞成人午夜鲁丝一区二区三区| 国产乡下妇女做爰毛片| 国产精品99一区二区| 欧美xxxx综合视频| 免费中文字幕在线| 欧美国产精品| 欧美极度另类性三渗透| 久久综合久久鬼| 在线观看视频免费一区二区三区| 欧美国产日本高清在线| 免费麻豆国产一区二区三区四区| 91亚洲va在线va天堂va国| 精品无码国产一区二区三区av| 18视频免费网址在线观看| 久久精品一区二区三区不卡牛牛| 久久久com| 视频一区二区三区国产| 91免费观看在线| 欧美重口乱码一区二区| 国产精品二线| 日韩一区有码在线| 欧美a级黄色大片| 欧洲中文在线| 欧美日韩精品在线播放| 亚洲国产精品久久久久爰色欲| 亚洲妇女成熟| 在线看日韩精品电影| 黄色三级视频在线| 国产一区 二区| 精品国产露脸精彩对白| 欧美深性狂猛ⅹxxx深喉 | 麻豆视频网站在线观看| 亚洲精品免费一二三区| 国自产拍偷拍精品啪啪一区二区| 热三久草你在线| 欧美体内she精视频| 国产精品久久久久久9999| 综合激情五月婷婷| 亚洲欧美日韩国产成人| 久久久99999| 激情欧美亚洲| 国产精品久久久久久久久粉嫩av| 国产免费黄色片| 99国内精品久久| 亚洲午夜高清视频| av老司机免费在线| 欧美三级电影网| 丰满少妇中文字幕| 国产传媒欧美日韩成人精品大片| 日韩视频―中文字幕| 国产一级特黄aaa大片| 免费视频一区二区| 精品国产免费久久久久久尖叫| h视频在线播放| 午夜视频一区二区| jizz18女人| 欧美色图婷婷| 不卡av日日日| 一区二区三区麻豆| 成人免费视频视频| 26uuu成人| 综合日韩av| 精品少妇一区二区三区视频免付费| 精品人妻无码一区二区三区| 国产精品传媒精东影业在线| 91av视频在线| 亚洲精品国产精品乱码不卡| 中文字幕欧美三区| 国产在线青青草| 97久久亚洲| 久久精品电影网站| 老熟妇一区二区三区啪啪| jvid福利写真一区二区三区| 日本丰满少妇黄大片在线观看| 精品3atv在线视频| 日韩高清a**址| 九九视频免费看| 久久99精品久久久久久久久久久久| 韩国成人动漫在线观看| 欧美卡一卡二| 欧美一区二区在线视频| 亚洲熟女少妇一区二区| 日韩高清不卡在线| 免费亚洲精品视频| 欧美aaaaa性bbbbb小妇| 精品成人免费观看| 欧美久久久久久久久久久久| 国产一区二区福利| 午夜在线视频免费观看| 四虎视频在线精品免费网址| 一本色道久久88综合日韩精品| www.色国产| 国产婷婷色一区二区三区在线| 噜噜噜久久亚洲精品国产品麻豆| 国内精品国产成人国产三级粉色 | 欧美色图亚洲视频| 激情成人午夜视频| 尤物国产精品| 91精品亚洲一区在线观看| 丝袜美腿精品国产二区| 中文字幕第31页| 中文字幕乱码日本亚洲一区二区| 成人中文字幕av| jvid福利在线一区二区| 国产精品日日摸夜夜添夜夜av| 成人性生交大片免费看午夜 | av亚洲免费| 国产精品极品尤物在线观看 | 中文字幕在线一区免费| 激情五月婷婷基地| 亚洲精品国产偷自在线观看| 91久久嫩草影院一区二区| h片在线免费| 精品国产一区a| 国产午夜免费视频| 91麻豆国产自产在线观看| 亚洲人成色77777| 欧美影院三区| 91久久久久久久久| bl在线肉h视频大尺度| 日韩高清av一区二区三区| 黄色av一区二区| 国产精品色婷婷久久58| 91丝袜超薄交口足| 亚洲精选一区| 日韩高清专区| 国产一区二区高清在线| 国内免费久久久久久久久久久| 日本天堂在线| 欧美日韩dvd在线观看| 免费网站观看www在线观| av电影在线观看不卡| 精品久久久久久中文字幕2017| 青青草原综合久久大伊人精品 | 青青青在线视频免费观看| 一区二区三区| 99免费精品视频| 日本精品一区在线观看| 三上亚洲一区二区| 91牛牛免费视频| а√在线天堂官网| 伊人伊成久久人综合网小说| 99热这里只有精品99| 五月婷婷综合激情| 精品一区二区6| 成人午夜大片免费观看| 成人免费无码av| 欧美日韩成人| 四虎影院一区二区三区 | 强迫凌虐淫辱の牝奴在线观看| 视频一区中文字幕国产| 国产精品日韩三级| 欧美精品久久久久久| 高清视频在线观看一区| av成人免费看| 欧美一级淫片播放口| 99自拍视频在线观看| 一本色道久久88亚洲综合88| 色网站免费观看| 欧美一区二区三区免费观看视频| 亚洲不卡视频在线观看| 亚洲小说欧美激情另类| 国精产品久拍自产在线网站| 91麻豆成人久久精品二区三区| 精品亚洲视频在线| 日韩电影免费在线看| 狠狠干 狠狠操| 欧美日本一区| 亚洲一区bb| 国产精品欧美日韩一区| 国产一区二区三区av在线| 午夜电影一区| 成人国产精品免费视频| 日韩久久一区二区三区| 4444欧美成人kkkk| 日本电影在线观看| 久久精品视频播放| 日韩三级影院| 国产一区二区日韩| 欧美日韩国产亚洲沙发| 亚洲国产精品99| 午夜精品无码一区二区三区| 69堂成人精品免费视频| 中文字幕人妻精品一区| 欧美在线播放高清精品| 亚洲黄色免费观看| 欧美日韩在线影院| 久久久久久久极品| 毛片久久久久久| 国产精品天美传媒沈樵| 人妻视频一区二区| 国产三级一区二区| 亚洲自拍偷拍图| 国产日产欧美一区二区三区| 国产ts在线播放| 久久久久国产成人精品亚洲午夜| 亚洲av网址在线| 26uuuu精品一区二区| 9.1成人看片| 久久久噜噜噜久久人人看 | 国产91一区| 欧美午夜精品久久久久免费视| 欧美男人操女人视频| 久久久久久久免费| 国产精品视频一区二区三区四蜜臂| 久久福利电影| 欧美女优在线视频| 亚洲成人蜜桃| 91精品国产91久久久久久密臀 | 三级一区在线视频先锋| 日韩av播放器| 喷白浆一区二区| 亚洲欧美天堂在线| 国产成人免费高清| 美女又爽又黄视频毛茸茸| 久久免费国产精品| 蜜桃av免费在线观看| 亚洲你懂的在线视频| 国产乡下妇女做爰| 色婷婷综合久久久久中文| 久久精品99北条麻妃| 这里只有精品99re| 欧美自拍偷拍第一页| 亚洲欧美激情另类校园| 欧美激情办公室videoshd| 欧美大学生性色视频| 中文字幕高清在线播放| 国产精品一区二区久久国产| 日本免费精品| 蜜桃av噜噜一区二区三| 91视频综合| 欧美日韩成人免费视频| 日本va欧美va瓶| 国产香蕉精品视频| 国产日韩欧美a| 九九热视频精品| 在线一区二区三区四区| 99久久亚洲精品日本无码| 亚洲国产天堂久久综合| 午夜伦理在线| 午夜精品一区二区三区av| 99riav视频一区二区| 国产91免费视频| 欧美丝袜激情| 国产精品又粗又长| 久久99精品国产.久久久久久| 国产精品果冻传媒| 国产精品久久久久久亚洲毛片 | 爱啪啪综合导航| 国产精品网址在线| 欧美性生活一级片| 男女h黄动漫啪啪无遮挡软件| 奶水喷射视频一区| aaaaa黄色片| 中文无字幕一区二区三区| 日本免费观看视| 欧美一区二区三区人| 韩国中文字幕2020精品| 久久久久久国产精品久久| 欧美高清免费| 欧美人与性禽动交精品| 激情久久综合| 亚洲三级在线视频| 欧美国产禁国产网站cc| 久热这里只有精品6| 日韩精品一区二区三区三区免费| 成人在线观看一区| 奇米四色中文综合久久| 哺乳一区二区三区中文视频 | 欧美肥胖老妇做爰| 国产精品无码2021在线观看| 91精品国产精品| 中文无码日韩欧| 国产a级片免费看| 人人精品人人爱| 日本激情小视频| 黑人精品xxx一区| 无码国产色欲xxxx视频| 欧美黑人性猛交| 欧美a级大片在线| 最新av网址在线观看| 久久99精品久久久| 午夜成人亚洲理伦片在线观看| 91黄色免费观看| 免费a级毛片在线观看| 91av在线国产| 西瓜成人精品人成网站| 亚洲熟妇国产熟妇肥婆| youjizz久久| 日韩精品成人在线| 亚洲国模精品私拍| 国产拍在线视频| 精品免费国产| 亚洲一区二区成人| 日本一区二区三区网站| 精品久久久久久国产91| 天堂91在线| 日韩av不卡电影| av亚洲免费| 国产女同无遮挡互慰高潮91| 日韩一区有码在线| 亚洲大尺度视频| 国外成人在线直播| 蜜桃一区二区| a在线观看免费视频| 中文字幕免费一区| av网站免费大全| 久久久久久69| 琪琪久久久久日韩精品| 粉嫩虎白女毛片人体| 中文字幕不卡在线观看| 国产又粗又猛又黄又爽| 精品少妇v888av| 久久精品色播| 欧美视频免费播放| 国产精品萝li| 精品国产九九九| 91产国在线观看动作片喷水| 国产成人手机高清在线观看网站| 亚洲 欧美 另类人妖| 亚洲美女淫视频| 欧美 日韩 国产 精品| 日本sm极度另类视频| 日韩免费看片| 2025中文字幕| 在线视频观看一区| caopeng在线| 精品中文字幕人| 老司机精品视频导航| 青青操国产视频| 亚洲欧洲xxxx| 日韩精品一区二区三区免费视频| 亚洲人精品午夜射精日韩| 久久精品视频一区| 国产成人精品白浆久久69| 91av国产在线| 天堂美国久久| 一级欧美一级日韩片| 欧洲另类一二三四区| 青草影视电视剧免费播放在线观看| 久久精品人成| 韩国av一区二区三区四区| 91国产丝袜播放在线| 色偷偷av一区二区三区乱| 欧美深夜视频| a级大片免费看| 色婷婷狠狠综合| 久久香蕉一区| 亚洲一区二区三区涩| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品国产精品国产专区| 欧美一区二区三区…… |