前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES Cache: Page Cache

ES Cache: Page Cache

原创
作者头像
叫我家宝
发布2022-04-25 14:39:52
1.2K0
发布2022-04-25 14:39:52
举报

描述

Page Cache本身是操作系统的概念. ES只是很自然的用到了这个概念.

操作系统视角

从操作系统的角度, page cache也称为disk cache, 是操作系统对硬盘(HDD or SSD)的缓存. OS 使用当前空闲的RAM来保存page cache, 用来加速对硬盘的访问. page cache在内核实现, 对应用程序几乎是透明的.

一般操作系统会把全部空闲的内存用作page cache. 因为被分配用作page cache的内存非常容易就可以被重新声明为可被应用使用的空闲内存, 这个过程几乎没有性能损耗, 操作系统甚至可以直接把用作page cache的内存报告为空闲内存.

ES视角

因为Lucene的segment文件都是不可变的, 因此可以非常好的利用page cache.

在以下这些时候, page cache会失效, 需要重新读取硬盘:

  1. 当产生新段的时候(提交新段, 段合并).
  2. 内存满了, 有些page cache被kernel通过类似LRU的算法释放了.
  3. 操作系统重启.

缓存内容

page cache的缓存内容就是索引文件.

可配置项

可以配置page cache预先读取. 主要是解决操作系统重启后造成的page cache失效问题. 如果使用这一项的话需要确保内存足够装下所有索引文件.

详情参考:

https://www.elastic.co/guide/en/elasticsearch/reference/8.1/preload-data-to-file-system-cache.html

Q&A

  • page cache怎么集成到ES的?
    • ES, Lucene这些都属于运行在操作系统上的应用程序, 而page cache是操作系统级别的, 从ES, Lucene的视角是不需要特意使用page cache的. 当Lucene读取索引文件的时候, 会自动使用page cache做索引文件的缓存.
  • page cache的存储粒度是什么?
    • 存储粒度是每个索引的文件, 如.nvd, .dvd等.
  • page cache什么时候失效?
    • 当产生新段的时候(提交新段, 段合并).
    • 内存满了, 有些page cache被kernel通过类似LRU的算法释放了.
    • 操作系统重启.
  • page cache的淘汰算法是怎么样的?
    • 据说是用了类似LRU的算法, 如果要了解详情, 应该需要看操作系统内核的实现.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 描述
    • 操作系统视角
      • ES视角
      • 缓存内容
      • 可配置项
      • Q&A
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档