[development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存
这个事来自dpdk, 所以, 先参考.
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html
当前, 假设你已经读过上边内容, 知道大页内存时候, dpdk是什么,以及怎样使用.
我们已经知道, 为系统分配大页内存有两种大小:
2M 和 1G
1G的只有64位系统支持, 并且我们推荐64位的操作系统尽量使用1G的page
同时, 我们还知道配置大页内存,有两个时机
boot time 和 run time
boot time的配置写在grub里,给内核.
run time的配置方式, 类似如下:
# 不是 numa 的
echo > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages # 是 numa 的
echo > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
据说, 1G的必须在boot time分配, 而且,就算是2M的也应该在开机之后尽快分配, 因为申请的大页需要连续空间, 如果不连续, 申请将失败.
那么, boot time是申请1G大页的内核参数如下:
default_hugepagesz=1G hugepagesz=1G hugepages=
上面的例子, 申请了4G的大页, 如果是numa的话, 这4G会被平分给两个node, 每个node, 2G
而接下的问题是: 在实际生产生活中我们并不想这样用. 比如,我只想在node0上申请4G的大页, 而不想在node1上申请大页.
这时候, 一个人在intel问了这个问题, 然后intel的人很不负责人的回答了(我只是为了吐槽)
https://embedded.communities.intel.com/thread/6681
真正的解决方案在这里:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-memory-configuring-huge-pages
简单的来说就是
1. 先用这样的参数
default_hugepagesz=1G hugepagesz=1G
2. 在用下面的命令, 给不同的node配置不同的页数
echo $ > $nodes_path/$/hugepages/hugepages-1048576kB/nr_hugepages
另外如果知道,支不支持1G的大页?
2M, 查看CPU的 psr 标记
[root@dpdk ~]# cat /proc/cpuinfo |grep pse
1G, 查看CPU的 pdpe1gb 标记
[root@dpdk ~]# cat /proc/cpuinfo |grep pdpe1gb
另外的另外, 我的QEMU不支持怎么办?
首先查看支不支持,
qemu-system-x86_64 -cpu help
然后, 启动的时候在CPU类型后面加一个参数:
qemu-system-x86_64 -cpu Nehalem,pdpe1gb
参考:
[daily][qemu][kvm] qemu增加减少CPUID
[development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存的更多相关文章
- [development][dpdk][hugepage] 大页内存的挂载
参考: [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存 完成了以上内容之后, 下一步需要做的是挂载, 大页内存只有被挂载了之后,才能被应用程序使用. 挂 ...
- Linux 之 hugepage 大页内存理论
HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能.尤其是对于8GB以上的内存以 ...
- [development][dpdk][pktgen] 网卡收发包性能测试
一: 多队列及中断信息收集 [root@T185 ~]# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: RX Mini ...
- 使用malloc函数或new运算符为链表结点分配内存空间
目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...
- LINUX下为ORACLE数据库设置大页--hugepage
在Linux中配置hugepage可以提高oracle的性能,减少oracle sga的页交换,类似于aix中的lagepage. 为什么 使用大页? LINUX内存的默认块大小是4K如果SGA为:1 ...
- 转:// LINUX下为ORACLE数据库设置大页--hugepage
一.在解释什么情况下需要开启大页和为啥需要开启大页前先了解下Linux下页的相关的知识:以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录en ...
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...
- [development][dpdk] dpdk-pmdinfo 工具的使用
发现了一个工具 dpdk-pmdinfo 但是文档介绍的很不清楚, http://dpdk.org/doc/guides/tools/pmdinfo.html 经过摸索, 这可能就是一个查询 dpdk ...
- [development][dpdk] dpdk与CONFIG_RTE_MAX_MEMSEG有关的错误
dpdk程序无法启动, 错误如下: EAL: Requesting pages of size 2MB EAL: Requesting pages of size 2MB EAL: Can only ...
随机推荐
- kali2016.1 基本配置
更新源 修改 /etc/apt/sources.list #kali官方源 deb http://http.kali.org/kali kali-rolling main non-free cont ...
- PSR PHP业界规范
0x0 大型项目的问题 随着项目越来越大,参与的人数越来越多,代码变得越来越不可维护了. 每个人都给项目带来自己的风格,所以这时就需要大家采用一个统一的标准. 0x1 解决办法 于是顶尖的PHPer们 ...
- 【emWin】例程二十四:窗口对象——Header
简介: HEADER 小工具用于标记表格的列,本例程示例演示如何使用HEADER小工具. 触摸校准(上电可选择是否进入校准界面) 实验指导书及代码包下载: 链接:http://pan.baidu.co ...
- java 虚拟机设置 Xms Xmx PermSize MaxPermSize
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...
- android 中的一些资源注解,让编译器帮你检查代码
android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如 ...
- Centos7最小化安装
1.先使用minimal安装系统 2.配置网络:dhcp或者静态ip,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件:配置DNS,修改/etc/resolv ...
- Java知多少(49)throw:异常的抛出
到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下: throw ThrowableInstance;这里,Thr ...
- USB学习笔记连载(二十一):CY7C68013A进行数据传输(一)
官方手册中给出了bulkloop参考例程,此例程是PC从端口2发送出数据,然后从端口6接收到数据,那么根据这个思想,可以进行修改,使得PC机接收到的数据不是从EP2发送过来的,而是从外部逻辑,比如FP ...
- 【转帖】2015年2月份最佳的免费 UI 工具包
2015年2月份最佳的免费 UI 工具包 设计师们最喜欢 UI 工具包,这是一种思路拓展的方法,同时可以利用它们来解决各种复杂的项目,同时可用来了解其他设计师的风格.这里我们收集了最近这一个月一些最棒 ...
- Mac zsh切换bash bash切换zsh
切换bash ————>>>chsh -s /bin/bash 切换zsh ------->>>chsh -s /bin/zsh