Linux透明大页(Transparent Huge Pages)对ES性能对影响

上周对ES集群进行扩容,运维同学找了几台物理机部署data node,结果发现新的data node比以前的data node性能差很多。同样的data node配置,同样的查询量,测试结果:CPU低,load非常高,diskIO打满。

最后通过对比系统配置,发现区别是新加入的物理机以前是跑MongoDB的,按官方建议关闭了透明大页(THP),而老机器的透明大页是开启的,遂把THP enable、重启。果然data node性能恢复正常。以前读到的ES相关文档中似乎没有涉及到THP的,不过在对THP有一定了解之后,就能够弄明白为什么开启THP会有助于提升data node性能了。

透明大页顾名思义就是把大页透明化,“透明”很好理解,我们在软件设计中经常涉及到组件“透明化”,方便调用方使用。透明大页就是对“标准大页”的优化:方便使用和管理。所以,只要搞明白什么是标准大页基本就够了。

操作系统内存管理上每个页是4kb,这是在计算机技术发展的初期定下来的,当时计算机的内存都比较小,到了今天,服务器内存动辄几十G上百G,服务进程使用的内存也普遍几G几十G,在某些场景中每页4kb的不足就逐渐体现出来了。比如程序使用2M的内存,每个页面4kb则需要512个页面,同时TLB(快表,就是所谓的高级缓存)中有512项。当需要加载到内存时,会产生512次缺页中断,当查询的时候页容易出现TLB Miss。如果每页是2M,则只需要1次缺页中断以及更高的cache命中率,从而使用大页相应的增大了内存的使用率。

不过也不是所有场景都适合开启THP,MongoDB,Redis,OracleDB等数据库方面的应用明确表明需要disable THP,因与本文无关不再展开。

再回来说说为什么ES对THP那么敏感。ES---准确的说是lucene---非常依赖内存,lucene用到内存的地方很多:Field Data, Term Dictionary,Posting List... ES官方也明确建议把机器一半的内存留给Lucene。我们知道程序使用的是内存虚拟地址,虚拟内存在转换成物理内存的时候需要查页表,也需要查页表的缓存TLB,这时就跟THP扯上关系了,开启THP,单页size大,需要的页面个数就少,从而就减少了缺页中断,并提高了TLB命中率。这样就能少查磁盘,降低磁盘IO,降低server load,从而提升ES查询性能。

原文地址:https://www.cnblogs.com/zhq1007/p/12641461.html

时间: 2024-10-13 03:15:28

Linux透明大页(Transparent Huge Pages)对ES性能对影响的相关文章

大页(huge pages) 系列四 ---Transparent HugePages

从RedHat 6, OEL 6, SLES 11 and UEK2 kernels 开始,系统缺省会启用 Transparent HugePages  :用来提高内存管理 的性能透明大页(Transparent HugePages )和之前版本中的大页功能上类似,主要的区别是:Transparent HugePages 可以实时配置, 不需要重启才能生效配置: 透明大页(Transparent HugePages )主要是利用khugepaged thread,而以前的 大页是通过在系统启动时

大页(huge pages) 三大系列 ---计算大页配置参数

使用以下shell 脚本来计算大页配置参数,确保使用脚本实例之前的数据已经开始, 如果数据库的版本号11g,确认是否使用自己主动的内存管理(AMM) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #!/bin/bash # # hugepages_settings.sh # # Linux bash script to compute values fo

oracle之 关闭透明大页

方法一: 1.设置/etc/grub.conf文件,添加 transparent_hugepage=never ,在系统启动是禁用 [[email protected] ~]# cat /etc/grub.conf # grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE: You have a /boot partit

redis启动后出现"WARNING you have Transparent Huge Pages (THP) support enabled in your kernel"问题

问题描述:启动redis后出现:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as

【翻译自mos文章】在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题

在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题 来源于: ORA-600 [KGHLKREM1] On Linux Using Parameter drop_cache On hugepages Configuration (文档 ID 1070812.1) 适用于: Oracle Database - Enterprise Edition - Version 10.2.0.1 and later Generic Linux ***C

kvm 优化特性:ksm技术,大页内存等

参考: http://tech.it168.com/a2016/1101/3005/000003005933.shtml(ksm) http://www.cnblogs.com/dongzhiquan/p/5043912.html(大页内存优点) <kvm虚拟化技术 实战与原理解析> 简介: cow:copy on write,也就是写时复制.这是一种内存共享技术,在linux中当使用fork 函数创建一个进程时,子进程和父进程共享全部的内存,当这片共享的内存区域被进程试图修改的时候,内核会分

大页内存(HugePages)

原文转载自:http://blog.csdn.net/yutianzuijin/article/details/41912871 今天给大家介绍一种比较新奇的程序性能优化方法—大页内存(HugePages),简单来说就是通过增大操作系统页的大小来减小页表,从而避免快表 缺失.这方面的资料比较贫乏,而且网上绝大多数资料都是介绍它在Oracle数据库中的应用,这会让人产生一种错觉:这种技术只能在Oracle数据库中 应用.但其实,大页内存可以算是一种非常通用的优化技术,应用范围很广,针对不同的应用程

大页内存(HugePages)在通用程序优化中的应用

今天给大家介绍一种比较新奇的程序性能优化方法-大页内存(HugePages),简单来说就是通过增大操作系统页的大小来减小页表,从而避免快表缺失.这方面的资料比较贫乏,而且网上绝大多数资料都是介绍它在Oracle数据库中的应用,这会让人产生一种错觉:这种技术只能在Oracle数据库中应用.但其实,大页内存可以算是一种非常通用的优化技术,应用范围很广,针对不同的应用程序,最多可能会带来50%的性能提升,优化效果还是非常明显的.在本博客中,将通过一个具体的例子来介绍大页内存的使用方法. 在介绍之前需要

WARNING you have Transparen Huge Pages..

redis启动警告: WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root