这个事来自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] 为不同的结点分配不同大小的大页内存的更多相关文章

  1. [development][dpdk][hugepage] 大页内存的挂载

    参考: [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存 完成了以上内容之后, 下一步需要做的是挂载, 大页内存只有被挂载了之后,才能被应用程序使用. 挂 ...

  2. Linux 之 hugepage 大页内存理论

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

  3. [development][dpdk][pktgen] 网卡收发包性能测试

    一: 多队列及中断信息收集 [root@T185 ~]# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: RX Mini ...

  4. 使用malloc函数或new运算符为链表结点分配内存空间

    目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...

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

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

  6. 转:// LINUX下为ORACLE数据库设置大页--hugepage

    一.在解释什么情况下需要开启大页和为啥需要开启大页前先了解下Linux下页的相关的知识:以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录en ...

  7. 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件

    本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...

  8. [development][dpdk] dpdk-pmdinfo 工具的使用

    发现了一个工具 dpdk-pmdinfo 但是文档介绍的很不清楚, http://dpdk.org/doc/guides/tools/pmdinfo.html 经过摸索, 这可能就是一个查询 dpdk ...

  9. [development][dpdk] dpdk与CONFIG_RTE_MAX_MEMSEG有关的错误

    dpdk程序无法启动, 错误如下: EAL: Requesting pages of size 2MB EAL: Requesting pages of size 2MB EAL: Can only ...

随机推荐

  1. linux每日命令(19):locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  2. redis竞汰数据同步问题解决

    Redis 面试的时候遇到过问Redis是如何解决“竞态条件”的,相关知识点总结一下. 乐观锁 所谓竞态条件,举个例子,一个代表点击数的数值hitcount,每个客户点击一次则+1. 没有事务的时候, ...

  3. Linux部署Web应用程序超链接下载中文名称文件404问题解决办法

    Web应用程序目录下有帮助文档,是中文名称的Word文件 超链接内容如下: <a href="jsp/plugin/用户手册.doc">用户手册</a> 开 ...

  4. Angular4学习笔记(五)- 数据绑定、响应式编程和管道

    概念 Angular中的数据绑定指的是同一组件中控制器文件(.ts)与视图文件(.html)之间的数据传递. 分类 流向 单向绑定 它的意思是要么是ts文件为html文件赋值,要么相反. ts-> ...

  5. OpenWRT AR9331 mjpg-streamer 网络安装和离线ipk安装

    OpenWRT  AR9331 固件 我的摄像头ID为: root@Off-1CD0:/# lsusb Bus 001 Device 002: ID 1871:0101 OpenWRT支持的UVV摄像 ...

  6. Make ProgressBar Vertical

    Create a drawable in your Drawable folder called vertical_progress_bar.xml: <?xml version="1 ...

  7. DedeCMS织梦文章页图片地址为绝对路径实现方法

    {dede:field.body function='replaceurl(@me)'/} 余斗博客改版后增加了一个m站点即手机站点,用二级域名实现,在做手机站的过程中发现一个问题,手机站和pc站都是 ...

  8. [Laravel] 01 - Love beautiful code? We do too.

    前言 一.良心资料 英文 Laravel 框架:https://laravel.com/ 教程:https://laracasts.com/series/ laravel-from-scratch-2 ...

  9. 4、一、Introduction(入门):3、System Permissions(系统权限)

    3.System Permissions(系统权限)   Android is a privilege-separated operating system, in which each applic ...

  10. ios开发之--关于UIView的autoresizingMask属性的研究

    在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高. enum { UIViewAutoresizi ...