HugePages -- 介绍及配置

本文详细介绍了在Linux系统中配置HugePages的方法及其对Oracle数据库性能的影响。通过增大页面大小并减少页面数量来提高TLB命中率,降低内存使用及避免页面交换,从而提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Why Do You Need HugePages ?


HugePages 属于Linux操作系统内核。配置了大页,那个系统将在“大页”和“小页”之间进行二选一。(默认读取数据为4KB)。 详细介绍参见: Document 361323.1


如果你有很大的内存或者SGA,那个配置大页将会是Oracle数据库性能调优的重要系统参数(比如大于8GB),那么你将需要配置HugePages,以下为配置SGA大小的注意事项,HugePages的建议:


- 更大的Pagesize & 更少的页面 (Larger Page Size and Less # of Pages):默认的page大小为4k,然而HugeTLB(HugeTables)大小为2048K。那么意味着操作系统需要至少处理512次page


- 减少页面的游走 (Reduced Page Table Walking):自从一个HugePages 覆盖一个较大的、连续的虚拟地址范围,而不是常规大小的页面,因此每个TLB条目的TLB命中率要比普通页面高。这减少了从虚拟地址获取物理地址的次数。


- 减少内存使用 (Less memory usage):从Oracle DB的观点出发。使用HugePages Linux内核参数,将会减少内存在创建pagetable时 提供虚拟物理内存映射给SGA地址的范围的 使用情况。


- 避免交换页 (No Swapping): 我们必须避免swapping 在Linux系统上的发生。HugePages是不可被swap的。(常规的pages是可以被交换的),所以这也没有page的替代机制,Hugepages被普遍的看做是一个解决方法。


- 没有 'kswapd' 操作(No 'kswapd' Operations) :如果有很大的区域被paged,那么kswapd将会非常繁忙。


  • How to configure

Step 1

set in /etc/security/limits.conf.

设置memlock参数,此值稍小于内存即可。
例: 64GB内存
*   soft   memlock    60397977
*   hard   memlock    60397977
* 将这个值设置为大于您的SGA要求是没有害处的。


Step 2

Re-logon to the Oracle product owner account (e.g. 'oracle') and check the memlock limit

$ ulimit -l
60397977

Step 3

如果你的数据库版本为 Oracle 11g 及以上版本开启了AMM特性,那么该特性与HugePages冲突。

则需要disable AMM特性。设置初始化参数 MEMORY_TARGET and MEMORY_MAX_TARGET to 0 (zero)

* 从11.2.0.3开始,如果DBCA检测到机器有超过4GB的RAM,那么AMM将不再被默认配置。



Step 4

确保数据库实例启动,使用hugepages_setting.sh脚本,计算 vm.nr_hugepageskernel 参数建议值。Document 401749.1 

$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 1496
$
可参考我的博文: HugePages -- 配置计算脚本

Step 5

设置 /etc/sysctl.conf ,需从起生效。

vm.nr_hugepages = 1496



Step 6

stop all database instance & reboot server




Step 7: 

检查是否配置已生效 /proc/meminfo

# grep HugePages /proc/meminfo
HugePages_Total:    1496
HugePages_Free:      485
HugePages_Rsvd:      446
HugePages_Surp:        0


在深入学习和应用Cisco VPP时,掌握高级配置是必不可少的环节。为此,建议参考《FDIO VPP初学者指南:快速安装与使用》,这本指南不仅覆盖了基础安装和配置,也详细介绍Hugepages和DPDK等高级特性的设置过程,非常适合初学者进一步学习和实践。 参考资源链接:[FDIO VPP初学者指南:快速安装与使用](https://wenku.csdn.net/doc/3h2cfru4by?spm=1055.2569.3001.10343) 安装Cisco VPP首先确保你的Linux系统满足兼容性要求,然后按照指南中的安装方法选择适合你系统的安装方式。安装完成后,你可以使用vppctl命令行工具进行配置。 对于Hugepages配置,你需要确保系统支持并已启用大页内存。可以通过修改系统启动参数来保留必要数量的大页,并在VPP启动时指定使用这些大页。具体操作如下: 1. 编辑/etc/sysctl.conf文件,设置vm.nr_hugepages值以保留足够数量的大页内存。 2. 启动VPP时,在命令行中添加--use-hugepages参数以启用大页内存。 对于DPDK配置,首先需要通过apt-get或yum安装DPDK库和驱动。接着在VPP的配置文件中设置相关的DPDK参数,如内存池大小和网卡驱动绑定等。以下是配置DPDK的vppctl命令示例: 1. vppctl set dpdk-socket-mem <内存大小> 2. vppctl dpdk-devbind <网卡接口> <驱动名> 这些命令将帮助你为VPP配置和启用DPDK,从而提升网络数据处理的性能。 最后,为了能够深入理解和操作VPP,建议在解决了如何安装和基本配置VPP的问题后,继续学习《FDIO VPP初学者指南:快速安装与使用》中的其他章节,包括网络设备管理和优化等高级话题。这本指南不仅提供了VPP的全面操作指南,还包含了一系列实用示例和最佳实践,能够帮助你成为VPP的高级用户。 参考资源链接:[FDIO VPP初学者指南:快速安装与使用](https://wenku.csdn.net/doc/3h2cfru4by?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值