linux调整大页内存,Linux 系统如何进行大页面配置
Linux 系统如何进行大页面配置
3/31/2018
本文内容
在 Linux 中,物理内存是以页为单位来管理的。页的大小为 4096 字节。 1MB 的内存能划分为 256 页; 1GB 则等同于 256000 页。 CPU 中有一个内置的内存管理单元,用于存储这些页的列表,每页都有一个对应的入口。在这种情况下,内存管理单元的大小决定了服务器能使用的最大内存大小。
如果为服务器分配的内存远大于现有内存管理单元能管理的量,则会造成内存的浪费。 CentOS 6 中为解决这个问题,使用了大页面的方式。简单来说,大页面即大小为 2MB 或者 1GB 的页。 2MB 的页适用于管理 GB 级单位的内存; 1GB 的页适用于 TB 级单位的内存。
手动去管理大页面较麻烦,往往需要更改代码。为了便于系统管理员和开发人员使用, CentOS 引入了 transparent huge pages (后续简称 THP )的概念。 THP 是一个抽象层,其自动化了创建,管理和使用大页面的大多数步骤。
大页面的配置
大页面配置需要连续的内存空间,因此在开机时就分配是最可靠的方式。配置大页面的参数有:
hugepages :在内核中定义了开机启动时就分配的永久大页面的数量。默认为 0,即不分配。只有当系统有足够的连续可用页时,分配才会成功。由该参数保留的页不能用于其他用途。
hugepagesz: 在内核中定义了开机启动时分配的大页面的大小。可选值为 2MB 和 1GB 。默认是 2MB 。
default_hugepagesz:在内核中定义了开机启动时分配的大页面的默认大小。
要调整页的尺寸,必须将配置以参数格式写入到启动命令中。如要为系统配置 10 个 1GB 的大页面,则启动命令中要包含: default_hugepagesz=1G hugepagesz=1G hugepages=10。配置 1GB 的大页面,CPU 特性需要支持 pdpe1gb ,系统内核也需要支持。
查看与大页面的相关的配置:
命令 sysctl -a | grep -I huge 输出:
命令 cat /proc/meminfo 输出:
若配置了不同大小的大页面,可以通过 /var/log/message 中的启动参数进行查看:
大页面对内存使用的影响
配置大页面后,系统在开机启动时会首选尝试在内存中找到并预留连续的大小为 hugepages * hugepagesz 的内存空间。如果内存空间不满足,则启动会报错 Kernel Panic, Out of Memory 等错误。
使用大页面后,能减少系统管理和访问页的时间;内核中的 swap 守护进程也不会管理大页面占用的这部分空间。合理设置大页面能减少内存操作的负担,减少访问页表造成性能瓶颈的可能性,从而提升系统性能。
如只配置了一个大小的大页面,可以通过 /proc/meminfo 中的 Hugepagesize 和 HugePages_Total 计算出大页面所在内存空间的大小。这部分空间会被算到已用的内存空间里,即使还未真正被使用。
因此,用户可能观察到下面现象:使用 free 命令查看已用内存很大,但 top 或者 ps 中看到 %mem 的使用总量加起来却很少。
命令 free -g 输出:
命令 top 输出, Shift+m 按内存使用排序:
命令 ps,查看进程内存用量:
ps -eo uid,pid,rss,trs,pmem,stat,cmd
备注
一般情况下,配置的大页面可能主要供特定的应用程序或服务使用,其他进程是无法共享这部分空间的(如 Oracle SGA )。
请根据系统物理内存和应用需求来设置合适的大小,避免大页面使用的浪费;以及造成其他进程因竞争剩余可用内存而出现内存溢出的错误,进而导致系统崩溃的现象。
参考文档:
linux调整大页内存,Linux 系统如何进行大页面配置相关推荐
- linux透明大页内存,Linux如何禁用透明大页
环境: RHEL 6.5 + Oracle 11.2.0.4 RAC 1.确认透明大页是否开启 grep HugePage /proc/meminfo cat /sys/kernel/mm/redha ...
- linux 内存大页,Linux大页内存管理等---菜鸟初学
1. 查看linux的内存情况: free -m 2. 查看是否开启大页的方法: cat /proc/meminfo |grep -i HugePage AnonHugePages: 276480 k ...
- DPDK 大页内存实现(二十二)
上一篇文件介绍了linux内存管理以及大页内存的原理,有了原理的支撑,接下里分析dpdk大页内存源码就轻松了,才不会云里雾里不知道在说啥.所谓的dpdk大页内存的实现,说白了就是dpdk自己实现了一套 ...
- DPDK 大页内存原理(二十一)
在分析dpdk大页内存的源码之前,有必要对linux内存管理的原理以及大页内存的原理有个了解,缺少这些底层基础知识,分析dpdk大页内存的源码将举步维艰.这篇文章详细介绍下linux内存管理以及大页内 ...
- MySQL 开启大页内存
1. 开启大页内存 概述: 有些硬件或操作系统支持大于默认值的内存页(通常为4KB),这个时取决于底层硬件和操作系统.执行大页内存可以检查设备缓冲区的丢失.也可以改进性能. MySQL 使用Innod ...
- 大页内存与透明大页详解
大页内存 大页内存(HugePages),有时也叫"大内存页"."内存大页"."标准大页".操作系统以内存页为单位管理内存,内存页的大小对系 ...
- 内存虚拟化、内存复用、大页内存作用及详解
内存虚拟化.内存复用.大页内存作用及详解 1. 内存虚拟化 2. 内存复用 2.1. 内存共享 2.2. 内存置换 2.3. 内存气泡 3. 大页内存 3.1. 大页内存原理 3.2. 大页内存配置 ...
- 【内存】Linux 页表、大页与透明大页|大页内存
目录 页表与MMU CPU访问的是什么地址(虚拟地址,物理地址)? MMU如何工作 MMU对内存的保护 多级页表 一. 内存映射与页表 1. 内存映射 2. 页表 4. 页表的简单工作原理 大页 什么 ...
- Linux 调优篇:虚拟化调优(hugepage 大页内存)* 叁
一. 大页(HugePages)概念 Hugepage的引入 二. hugepages相关概念 三.Regular Pages 与 HugePages a.Regular Pages ...
最新文章
- 计算机组成原理时序,计算机组成原理 中央处理器(CPU) 多级时序系统
- Specification排序orderby
- SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid
- 4-玩转数据结构-链表
- 转载:python3 安装pycrypto
- 统计学习方法之机器学习相关理论
- 【干货】就这一篇,解决90% 新手连接虚拟机的网络问题
- Spark On Yarn 运行模式(详细)
- 源码|详解分布式事务之 Seata-Client 原理及流程
- 英特尔中国祝贺高亭宇夺冠:至强CPU提供更精准训练支持
- Atitit onvif协议获取rtsp地址播放java语言attilx总结
- 三款好用的前端代码编辑器推荐
- 修改tomcat日志打印位置
- varchar2(数值)和varchar2(数值 char)的说明
- 【基础入门题048】骰子游戏(一)
- 数字万用表性能指标介绍
- Java开源文件病毒扫描_使用多种反病毒引擎扫描文件
- 什么样的企业要使用360评估?
- C#+ArcEgine开发(2)添加shp和lyr文件
- 几款炫酷的CSS代码样式