话题
Topic一起来谈谈HugePage的优点或缺点,各位一线的兄弟们谈谈实战情况,二线的谈谈理论方法吧。(本期话题贡献人:杨建荣)
优点
杨建荣_北京:HugePage是Linux内核上一种使用内存块的方法。作为传统4K Page的替代,HugePage在大部分场景下可以提升Oracle实例的运行性能效率,O官网也提供了计算HugePage的脚本。从我们的实践来看,优点确实很多,主要是swap极低,tlb减轻,直观感受就是iowait很低,前几条做的测试,没启用iowait在10%以上,启用之后在0.0x。
王朝阳:1、默认内存是以4K的page来管理的,当内存很大时,page table就会很大,从而管理这些内存的消耗就比较大;而HugePage使用2M大小的page,可以减少内存管理的消耗。2、HugePage使用的是共享内存,在操作系统启动期间被动态分配并被保留,因此不会被置换,也能一定程度避免swap引发的数据库性能问题。
Lei:HugePage间接实现了aix下限制filesystemcache直接占用物理内存的目的。我的意思是说linux下没有os参数能限制文件系统缓冲对物理内存的占用,通过HugePage来锁住 sga这部分内存,这样就间接地限制了文件系统缓冲对物理内存的占用。
周亮:精髓是提高内存分配效率,减少CPU SYS开销。
ThinkJ:HugePage的好处是减少了页面数量,页表也少了一级,使得缺页中断的数量大大减少,缺页中断的处理效率也有了提高,从而提升应用的性能。在实际实践中,如果主机内存不大,那么HP的影响并不明显,但是内存比如有个128G甚至更高,那性能提升还是比较明显的。【大头_Ludatou:在大部分的环境中开启HP是有用的。有兴趣的同学可以了解下cpu cache,如果应用的压力不在tbl寻址上,那么开启HP效果可能适得其反,比如密集型的写操作等。网络就有不少这类文章。特别是不同的cache 协作协议下,cache 写miss率不一样。主要在于cpu协作冲突,主流numa架构下,网上有测试案例。】
黎俊杰:将小页合并成大页,减少CPU的开销,锁定的HugePage内存可使sga块不被换出,提高命中率。
缺点
杨建荣_北京:生产环境里面配置好处确实挺多,不过配置出问题,太高太低也有问题,之前某国电信系统HugePage客户配置给小了,系统直接hang住。
王朝阳:1、Oracle 11g中AMM不支持HugePage,但是ASMM可以使用;AMM和HugePage却都是Oracle最佳实践的一部分。2、因为HugePage使用的是共享内存,在操作系统启动期间被动态分配并被保留,不会被swap,所以要合理设置HugePage的值(所有实例SGA的总和),避免造成内存浪费。3、增加HugePage/添加物理内存/SGA发生变化,应该重新设置所需的HugePage。
黎俊杰:不能使用memory target。【杨建荣_北京:说到memory_target这个参数,从参数文件里清掉才行,设为0好像也不行。】
相关问答
韩璐:aix上有类似HugePage的功能吗?【杨建荣_北京:aix叫largepage吧。】我接触过256g的P750,领导怕SGA太大,增大管理开销,SGA只让设置了40G。【lastwinner:才用了1/6,太浪费了。】【杨建荣_北京:我们也是,不一定SGA开到最大,后来又在同一个服务器上加了一个库。】
Richard Lee:HugePage有设置标准吗?就是类似设置公式类型的东西。【杨建荣_北京:O官网能找到计算的脚本,只是建议,因为它不知道实际的需求。】O官网能找到计算的脚本在哪?能帮我把链接发一下吗?【韩璐:Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (Doc ID 401749.1)】
鸣 谢
在“DBA+社群”热议话题讨论活动中,得到了以下联合发起人以及群友们的积极参与和支持。在此,小编整理成文,并附上所有发表观点的人员头像汇总图,特此鸣谢!
本文来自合作伙伴"DBAplus",原文发布时间:2015-10-14