参考:

[development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存

完成了以上内容之后, 下一步需要做的是挂载, 大页内存只有被挂载了之后,才能被应用程序使用.

挂载方法如下: 参考dpdk文档:  http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

如果是有1G的大页, 需要给定默认参数 pagesize=1G, 否则将使用默认的大小.

nodev /mnt/huge_1GB hugetlbfs pagesize=1GB  

参考: https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt

CentOS 7 里面, 有一个service : dev-hugepages.mount 默认将会对大页内存进行挂载:

[root@dpdk crisp]# mount -l |grep huge
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)

参考: https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems/

引用一段话:

So you are seeing all kinds of weird file systems in the output of mount() that are not listed in /etc/fstab, and you wonder what those are, how you can get rid of them, or at least change their mount options.

上文提到, 如过想增加这个参数, 可以在 /etc/fstab 中进行挂载.

同时禁用掉dev-hugepages.mount ???

systemctl mask dev-hugepages.mount

当然还有一招, 文中没提, 但是我莫名的, 天然喜欢后者:

把dev-hugepages.mount 改一下.

/etc/fstab 也是被 systemd管理的, 实际上, /etc/fstab 和 mount.mount 最终是被统一管理的, 以挂载点, 即目录名, 作为唯一识别的标识.

优先顺序由前到后依次为:  /etc下的mount.mount > /etc/fstab > /usr下的mount.mount

摘自:  https://www.freedesktop.org/software/systemd/man/systemd.mount.html#

If a mount point is configured in both /etc/fstab and a unit file that is stored below /usr, the former will take precedence. If the unit file is stored below /etc, it will take precedence. 
This means: native unit files take precedence over traditional configuration files, but this is superseded by the rule that configuration in /etc will always take precedence over configuration in /usr.

基于以上:

  可以选择在/etc/fstab中增加一个/dev/hugepages 挂载点, 来覆盖 dev-hugepages.mount

[root@dpdk ~]# cat /etc/fstab |grep huge
nodev /dev/hugepages hugetlbfs defaults,nofail,pagesize=1G
[root@dpdk ~]#
[root@dpdk ~]# mount -l |grep hugetlbfs
nodev on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=1G)

  或写个增加了选项的 /etc/systemd/system/dev-hugepages.mount 文件, 来覆盖默认参数.

  参数的具体写法: https://www.freedesktop.org/software/systemd/man/systemd.mount.html#Options

[root@dpdk ~]# cp /usr/lib/systemd/system/dev-hugepages.mount  /etc/systemd/system/
[root@dpdk ~]# diff /usr/lib/systemd/system/dev-hugepages.mount /etc/systemd/system/dev-hugepages.mount
20a21
> Options=pagesize=1G
[root@dpdk ~]#
[root@dpdk ~]# mount -l |grep hugepages
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=1G)
[root@dpdk ~]#

这个时候只是做了基本的系统准备工作, 实际上, 还没有配置使用大页内存:

[root@dpdk ~]# numastat -m |grep Huge
AnonHugePages 8.00 0.00 8.00
HugePages_Total 0.00 0.00 0.00
HugePages_Free 0.00 0.00 0.00
HugePages_Surp 0.00 0.00 0.00
[root@dpdk ~]#

手工方法:

[root@dpdk ~]# echo  > /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
[root@dpdk ~]# numastat -m |grep Huge
AnonHugePages 8.00 0.00 8.00
HugePages_Total 0.00 2048.00 2048.00
HugePages_Free 0.00 2048.00 2048.00
HugePages_Surp 0.00 0.00 0.00
[root@dpdk ~]#

这样, 只在node1上分配好了大页内存, 而node0上没有.

自动方法: 写一个service, 如下:

╰─>$ cat hugetlb-gigantic-pages.service
[Unit]
Description=HugeTLB Gigantic Pages Reservation
DefaultDependencies=no
Before=dev-hugepages.mount
ConditionPathExists=/sys/devices/system/node
ConditionKernelCommandLine=hugepagesz=1G [Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/hugetlb-reserve-pages [Install]
WantedBy=sysinit.target
╰─>$ cat hugetlb-reserve-pages
#! /bin/bash nodes_path=/sys/devices/system/node/
if [ ! -d $nodes_path ]; then
echo "ERROR: $nodes_path does not exist"
exit
fi reserve_pages()
{
echo $ > $nodes_path/$/hugepages/hugepages-1048576kB/nr_hugepages
} # This example reserves 1G pages on node0 and 1G page on node1. You
# can modify it to your needs or add more lines to reserve memory in
# other nodes. Don't forget to uncomment the lines, otherwise then won't
# be executed. reserve_pages node0
reserve_pages node1

然后, 启用并重启

systemctl enable hugetlb-gigantic-pages.service 

[development][dpdk][hugepage] 大页内存的挂载的更多相关文章

  1. Linux 之 hugepage 大页内存理论

    HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能.尤其是对于8GB以上的内存以 ...

  2. [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存

    这个事来自dpdk, 所以, 先参考. http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html 当前, 假设你已经读过上边内容, 知道大页内存时候, dp ...

  3. OpenStack 高性能虚拟机之大页内存

    目录 文章目录 目录 前文列表 虚拟存储器系统 页式虚拟存储器 大页内存 Linux 的大页内存 大页的实现原理 大页内存配置 透明巨型页 THP 大页面对内存的影响 Nova 虚拟机的大页内存设置 ...

  4. 大页内存(HugePages)在通用程序优化中的应用

    今天给大家介绍一种比较新奇的程序性能优化方法-大页内存(HugePages),简单来说就是通过增大操作系统页的大小来减小页表,从而避免快表缺失.这方面的资料比较贫乏,而且网上绝大多数资料都是介绍它在O ...

  5. 大页内存(HugePages)

    原文转载自:http://blog.csdn.net/yutianzuijin/article/details/41912871 今天给大家介绍一种比较新奇的程序性能优化方法—大页内存(HugePag ...

  6. Linux大页内存管理等---菜鸟初学

    1. 查看linux的内存情况: free -m 2. 查看是否开启大页的方法: cat /proc/meminfo |grep -i HugePage AnonHugePages: 276480 k ...

  7. UIO,大页内存,CPU亲和性,NUMA机制等

    Linux环境下的UIO(Userspace I/O) UIO 用户空间下驱动程序的支持机制.DPDK使用UIO机制使网卡驱动程序运行在用户态,并采用轮询和零拷贝方式从网卡收取报文,提高收发报文的性能 ...

  8. Linux内存大页设置

    实际环境中,遇到3次由于内存大页设置参数不合理或者错误,导致系统内存不足,或者数据库内存不足的问题. 按照如下方式,推荐设置大页参考下发设置! 参考HugePages on Oracle Linux ...

  9. LINUX下为ORACLE数据库设置大页--hugepage

    在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage. 为什么 使用大页? LINUX内存的默认块大小是4K如果SGA为:1 ...

随机推荐

  1. 假设分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化

    {System.InvalidOperationException: 假设分配给命令的连接位于本地挂起事务中.ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始 ...

  2. 【emWin】例程二十七:窗口对象——Listview

    简介: LISTVIEW小工具可在具有多个列的列表中选择某个元素.由于LISTVIEW小工具包含了 一个HEADER小工具,因此可对列加以管理(排序等).所创建的LISTVIEW 既可以无环绕型框架窗 ...

  3. CentOs 6.x 升级 Python 版本【转】

    在CentOS 6.X 上面安装 Python 2.7.X CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本.所以需要进行版本升级.由于一些系统工具和服 ...

  4. 在android 上 使用 rxjava 入门篇

    什么是 rxJava? RxJava is a Java VM implementation of Reactive Extensions: a library for composing async ...

  5. 川崎机器人c#通讯(转)

    由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信.最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下. 除了直接与机器人通信外,有一种 ...

  6. Java知多少(102)多媒体基础

    本节介绍 Java程序播放幻灯片和动画,播放声音和视频的方法. 播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例 12-7]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. ...

  7. RedHat Linux7.3 使用yum安装时报错,改用CentOS yum源

    在使用redhat linux的yum来安装或者更新软件的时候会有如下提示: [root@node1 home]# yum install package_name Loaded plugins: p ...

  8. es6在项目中的应用

    摘要: 今年es6完成了规范制定,但是各大浏览器厂商还没有完全的支持.如果等到主流浏览器支持了再去学习,可能黄花菜都凉了.小编特地为大家准备了一个查询es6在各浏览器支持情况的站点,可以访问这里查询. ...

  9. [Tensorflow] **Android Meets TensorFlow

    TensorFlow Dev Summit 2017 From: Android Meets TensorFlow: How to Accelerate Your App with AI (Googl ...

  10. 面试题思考:GET和POST两种基本请求方法的区别

    面试回答: GET请求在URL中传送的参数是有长度限制的,而POST没有. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息. GET参数通过URL传递,POST放在Re ...