在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