精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美一区午夜视频在线观看| 国产一区二三区| 日韩精品免费一线在线观看| 欧美日韩大尺度| 国内外激情在线| 暴力调教一区二区三区| 国产精品久久久999| 欧美日韩精品一区二区三区视频播放| 精品欧美午夜寂寞影院| 欧美三级韩国三级日本三斤| 99er在线视频| 搞黄视频在线观看| 成人激情午夜影院| 91九色国产社区在线观看| 日韩成年人视频| 93在线视频精品免费观看| 亚洲国产精品久久久久秋霞不卡| 亚洲老女人av| 超碰高清在线| 亚洲美女免费在线| 日韩欧美精品久久| 性xxxx18| 国产盗摄视频一区二区三区| 国产自产视频一区二区三区| 日韩视频免费在线观看| 国产又爽又黄无码无遮挡在线观看| 国产经典一区| 丰满岳妇乱一区二区三区| 欧美一级中文字幕| 自拍视频在线免费观看| 久久久久99精品国产片| 国产乱码精品一区二区三区卡| 在线视频 91| 日韩精品视频网站| 日本午夜在线亚洲.国产| 粉嫩aⅴ一区二区三区四区五区 | 久久久精品中文字幕| www.亚洲自拍| 国产成人a视频高清在线观看| 欧美日韩中文字幕在线视频| 菠萝蜜视频在线观看入口| aaa在线观看| 国产喷白浆一区二区三区| 黄色小网站91| 亚洲乱码精品久久久久..| 精品一区二区三区免费观看| 国产精品免费久久久久影院| 伊人中文字幕在线观看| 国产欧美另类| 8x拔播拔播x8国产精品| 日本免费观看视| 日韩视频精品在线观看| 久久久久久久久久久av| 久草视频免费播放| 亚洲第一黄网| 97国产精品视频| 国产午夜免费福利| 免费中文字幕日韩欧美| 国产成人久久久| 亚洲午夜激情视频| 久久精品国产999大香线蕉| 国产在线视频欧美| 99这里有精品视频| www.一区二区| 欧洲在线视频一区| 1pondo在线播放免费| 国产一级片在线播放| 久久精品免费看| 91丝袜脚交足在线播放| 99久久精品国产成人一区二区 | 一区二区三区丝袜| 丰满少妇大力进入| 卡通欧美亚洲| 欧美日韩成人综合| japan高清日本乱xxxxx| 国产精品超碰| 在线看国产精品| 亚洲综合网在线| 亚洲理伦在线| 国产精品免费福利| 亚洲精品久久久久avwww潮水| av影院午夜一区| 涩涩日韩在线| 丰乳肥臀在线| 欧美在线不卡视频| 丰满少妇一区二区三区专区| 日韩电影不卡一区| 日韩视频第一页| 欧美不卡视频在线观看| 日本中文在线一区| 999国产在线| 免费在线观看污视频| 亚洲欧洲成人自拍| 国产网站免费在线观看| 色999久久久精品人人澡69| 精品对白一区国产伦| 中文字幕免费视频| 中文字幕日韩一区二区不卡| 7777精品久久久久久| 91亚洲国产成人精品一区| av一区二区三区在线| 影音欧美亚洲| 亚洲欧洲自拍| 日韩免费看网站| 欧美激情 一区| 亚洲经典三级| 91香蕉国产在线观看| 国产在线视频你懂得| 亚洲一区二区在线免费观看视频| 999在线免费视频| 国产精品99久久免费观看| 中文字幕亚洲在线| 国产一区二区三区在线免费观看| 欧美肉大捧一进一出免费视频| 成人激情电影在线| 91av在线网站| 亚洲国产精品suv| 国产精品视频观看| 男人天堂999| 懂色av一区二区| 久久精品国产久精国产一老狼 | 成人激情五月天| 日韩午夜一区| 国产91亚洲精品一区二区三区| 337p日本欧洲亚洲大胆鲁鲁| 色天使色偷偷av一区二区| 91精品啪在线观看国产| 欧美在线91| 91青草视频久久| 色综合久久影院| 91成人免费电影| 亚洲 小说 欧美 激情 另类| 日韩午夜在线| 九九九九九九精品| 国产在线精彩视频| 亚洲国产一区自拍| 久久精品亚洲无码| 高清视频一区二区| 国产真实老熟女无套内射| 免费一级欧美在线大片 | 激情aⅴ欧美一区二区欲海潮| 日韩欧美资源站| 九九九久久久久| 国产乱码精品一区二区三区忘忧草| 亚洲成人第一| 欧美成a人片免费观看久久五月天| 亚洲欧洲国产精品| 亚洲av无码精品一区二区| 91女神在线视频| 青青青在线播放| 精品国产乱码久久久久久蜜坠欲下 | 欧美日韩亚洲一区二区三区在线观看| 国产精品一二三产区| 日韩精品在线观看一区| 国产www在线| 国产欧美一区二区在线观看| 欧美国产日本在线| 疯狂揉花蒂控制高潮h| 在线亚洲观看| 欧美精品七区| 日韩视频网站在线观看| 中文字幕精品—区二区| 在线观看中文字幕2021| 亚洲视频一区二区在线| 中文字幕在线播放一区二区| 黑丝一区二区| 狠狠色狠狠色综合人人| 唐人社导航福利精品| 一区二区福利视频| 国产精选久久久| 亚洲图片欧美色图| 91精品人妻一区二区三区| 日韩成人免费在线| 男人的天堂成人| 韩国精品福利一区二区三区| 456国产精品| av每日在线更新| 欧美一三区三区四区免费在线看| 久久久全国免费视频| 91污在线观看| 99国产精品久久久久久| 亚洲一级一区| 亚欧精品在线| 国产日韩三级| 国产精品网红直播| 波多野结衣在线播放| 在线午夜精品自拍| 亚洲毛片在线播放| 在线观看日韩毛片| 欧美日韩免费一区二区| 久久久久久久久久久久久女国产乱| 亚洲最大综合网| 亚洲精品欧美| 在线观看国产一区| 少妇久久久久| 亚洲专区中文字幕| 男人最爱成人网| 欧美激情精品久久久久久黑人 | 小说区图片区色综合区| 成人h视频在线| 人成在线免费网站| 欧美另类第一页| h网站视频在线观看| 欧美不卡激情三级在线观看| 波多野结衣大片| 午夜精品国产更新| 一级黄色片日本| 7m精品国产导航在线| 亚洲激情六月丁香| 无码人妻精品一区二区三| 蜜桃av噜噜一区| 欧美女人性生活视频| 欧美午夜不卡| 香蕉视频免费版| 欧美手机视频| 欧美一区1区三区3区公司| jizz性欧美2| 亚洲va久久久噜噜噜久久天堂| 蜜桃精品在线| 51色欧美片视频在线观看| 色呦呦呦在线观看| 少妇激情综合网| 第一福利在线| 日韩精品一区二区视频| 日韩一级片免费在线观看| 777精品伊人久久久久大香线蕉| 亚洲另类在线观看| 欧美日韩国产丝袜美女| 日韩激情一区二区三区| 一区二区久久久久| 亚洲天堂黄色片| 亚洲欧洲精品一区二区三区不卡| 摸摸摸bbb毛毛毛片| 久久久久久久久免费| 18禁裸乳无遮挡啪啪无码免费| 成人精品国产一区二区4080| 四虎国产精品永久免费观看视频| 精品中文字幕一区二区| 久久久久久蜜桃一区二区| 三级成人在线视频| 美女喷白浆视频| 青草av.久久免费一区| 午夜免费高清视频| 秋霞午夜av一区二区三区| 国产日韩一区二区在线观看| 久久天堂成人| 黄色三级视频片| 免费人成精品欧美精品| 国模杨依粉嫩蝴蝶150p| 肉色丝袜一区二区| 天天干天天综合| 麻豆国产精品一区二区三区 | 日韩久久精品电影| 日本护士...精品国| 国产偷亚洲偷欧美偷精品| 久久精品国产亚洲a∨麻豆| 亚洲视频axxx| 日本高清视频在线播放| 久久综合国产精品台湾中文娱乐网| 浪潮av一区| 色综合久综合久久综合久鬼88| 日韩影视在线| 69**夜色精品国产69乱| 成人教育av| 亚洲在线黄色| 国产小视频免费| 亚洲人妖在线| 8x8x最新地址| 国产精品一区二区在线观看不卡 | 日韩乱码一区二区三区| 欧美四级电影在线观看| 国产麻豆91视频| 精品91自产拍在线观看一区| 视频国产一区二区三区| 亚洲性无码av在线| 欧美激情办公室videoshd| 欧美久久精品午夜青青大伊人| 成年网站在线视频网站| 国产成人精品视频在线| 91精品麻豆| 精品亚洲欧美日韩| 99热在线成人| 国产老熟妇精品观看| 日韩国产欧美一区二区三区| 香蕉视频xxxx| 久久久久久久久一| 欧美日韩一级在线观看| 色诱亚洲精品久久久久久| 国产日韩一级片| 日韩精品在线影院| 国产成人午夜| 日本国产一区二区三区| 成人综合日日夜夜| 裸模一区二区三区免费| 91精品国产调教在线观看| 国产日韩一区二区在线| 国产精品亚洲а∨天堂免在线| 一区二区三区伦理片| 亚洲综合激情另类小说区| 波多野结衣绝顶大高潮| 精品久久久久久最新网址| av在线播放免费| 97视频在线观看免费高清完整版在线观看| av亚洲一区| 久久成人资源| 欧美日韩免费| 中文国产在线观看| 久久精品一区二区| 国产精品第二十页| 日韩一区二区三区在线观看| 高清福利在线观看| 91精品国产91久久久| 一区二区三区四区精品视频| 亚洲欧美综合一区| 蜜桃视频一区| 日本xxxx裸体xxxx| 亚洲在线视频免费观看| 国产精品无码专区av免费播放| 亚洲人线精品午夜| 日本在线啊啊| 黄色一区三区| 亚洲第一网站| 精品无码av一区二区三区| 18欧美亚洲精品| 中文字幕精品在线观看| 亚洲精品一区二三区不卡| h片在线观看| 亚洲综合中文字幕在线观看| 国产亚洲精品码| 国产精品久久久久一区| 亚洲黄网在线观看| 亚洲美女激情视频| 97蜜桃久久| 国产美女精品久久久| 欧美在线看片| 亚洲在线观看网站| 亚洲欧美自拍偷拍| 一二三区中文字幕| 中文字幕日韩欧美| 国产一区二区精品调教| 日韩欧美亚洲v片| 日本va欧美va瓶| 亚洲天堂最新地址| 欧美亚洲一区三区| 国产污视频在线| 国产精品免费小视频| 成人黄色av| 日本在线播放一区二区| 中文字幕亚洲成人| 精品人妻无码一区二区三区蜜桃一| 久久久成人av| 日日夜夜精品视频| 美女黄色免费看| 972aa.com艺术欧美| 三级视频在线观看| 夜夜嗨av一区二区三区免费区| 日韩另类视频| 综合视频在线观看| 国产精品1区2区3区在线观看| 国产乱国产乱老熟300| 精品国产三级电影在线观看| a√中文在线观看| 欧美精品一区二区三区四区五区| 久热国产精品| 91传媒免费观看| 精品国产乱码久久久久久影片| 午夜久久中文| 亚洲国产午夜伦理片大全在线观看网站 | 99精品在免费线中文字幕网站一区| av在线免费观看国产| 久久综合久久鬼色| 中文字幕欧美在线观看| 美乳少妇欧美精品| 精品少妇3p| 最近中文字幕一区二区| 亚洲黄色片在线观看| 天天干天天做天天操| 国产成人avxxxxx在线看| 希岛爱理av一区二区三区| 成年女人免费视频| 在线观看国产一区二区| 香蕉成人app免费看片| 久久精品国产精品国产精品污 | 亚洲无线看天堂av| 欧美日本亚洲| 国产精品一区一区三区| 中文字幕一区二区人妻电影| 日韩在线观看av| 粉嫩久久久久久久极品| 亚洲一二三区av| 亚洲国产精品尤物yw在线观看| 黄色小视频在线免费观看| 99久久精品免费看国产一区二区三区 | 中文字幕亚洲精品乱码| 超碰男人的天堂| 欧美精品黑人性xxxx| 2022成人影院| 高清无码视频直接看| 国产人成一区二区三区影院| 欧美在线精品一区二区三区|