在Linux 64位系統裏面,默認內存是以4K的頁面(Page)來管理的,當系統有很是多的內存的時候,管理這些內存的消耗就比較大;而HugePage使用2M大小的頁面來減少管理開銷。node
操做系統對於數據的存取直接從內存要比從硬盤讀寫數據要快的多,可是內存是有限的,這樣就引出了物理內存與虛擬內存的概念。虛擬內存是利用硬盤空間虛擬出的一塊邏輯內存,這部分磁盤空間Windows下稱之爲虛擬內存,Linux下被稱爲交換空間(Swap Space)。linux
對於這個大內存的管理(物理內存+虛擬內存),大多數操做系統採用了分頁的方式進行管理。分頁方式能夠避免內存空間的浪費。相應地,也就存在內存的物理地址與虛擬地址的概念,CPU必須把虛擬地址轉換程物理內存地址才能真正訪問內存。爲了提升這個轉換效率,CPU會緩存最近的虛擬內存地址和物理內存地址的映射關係,並保存在一個由CPU維護的映射表中(快表)。爲了儘可能提升內存的訪問速度,須要在映射表中保存儘可能多的映射關係。算法
linux的內存管理採起的是分頁存取機制,爲了保證物理內存能獲得充分的利用,內核會按照LRU算法在適當的時候將內存中不常常使用的內存頁自動交換到虛擬內存中,而將常常使用的信息保留到內存。一般狀況下,Linux默認狀況下每頁是4K,這就意味着若是物理內存很大,則映射表的條目將會很是多,會影響CPU的檢索效率。由於內存大小是固定的,爲了減小映射表的條目,可採起的辦法只有增長頁的尺寸。所以Hugepage便所以而來。緩存
在NUMA機器上,應該在單獨的節點上明確分配頁面(假定須要1024頁):ide
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
查看Hugepage使用狀況:性能
cat /proc/meminfo|grep Huge
若是已經配置好了大內存頁機制,就可讓DPDK利用大內存頁的機制了。操作系統
mkdir /mnt/huge mount -t hugetlbfs nodev /mnt/huge