惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

博客园 - 软件心理学工程师

SPIFFE/SPIRE 的身份哲学与技术实现 后量子密码学(post-quantum cryptography):为什么重要以及如何使用 密钥管理碎碎念 SpringBoot集成resilience4j进行熔断和一个响应式编程的问题 凤凰项目&DevOps实践指南 OAuth2和OpenID API横向越权问题的分析和解决 初识RAG 基于AWS的密钥管理系统 加密算法的使用场景 《java8 in action》读书笔记 ES索引的一些长度限制 初识redis Elasticsearch慢查询故障诊断 Elasticsearch搜索调优 elasticsearch基础知识杂记 elasticsearch.yml 常用参数说明 linux log rotate elasticsearch local debug环境搭建 CAP碎碎念 彻底删除kafka topic步骤
Linux透明大页(Transparent Huge Pages)对ES性能对影响
软件心理学工程师 · 2020-04-06 · via 博客园 - 软件心理学工程师

上周对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查询性能。