关于TiKV实例内存使用的疑问?

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.3.0
【遇到的问题】已设置 storage.block-cache.capacity 参数限制 Block Cache Size 为 90G。但是Grafana 面板显示 Block Cache Size 为 75G。系统 top 命令显示 TiKV-Server 占用了 111G 内存。

【问题现象及影响】

  1. 如下为 tiup cluster edit-config <集群名> 返回的 TIKV 配置
  tikv:
    raftdb.defaultcf.block-cache-size: 4GiB
    readpool.unified.max-thread-count: 38
    rocksdb.defaultcf.block-cache-size: 50GiB
    rocksdb.lockcf.block-cache-size: 4GiB
    rocksdb.writecf.block-cache-size: 25GiB
    server.grpc-concurrency: 14
    server.grpc-raft-conn-num: 5
    split.qps-threshold: 2000
    storage.block-cache.capacity: 90GiB
  1. 下图为 Grafana->TiKV-Detail->RocksDB-KV->Block Cache Size 面板,

  2. 下图为 Grafana->TiKV-Detail->Cluster->Memory 面板,这里和系统 top 显示的一致。

疑问

  1. Grafana->TiKV-Detail->RocksDB-KV->Block Cache Size 面板的值不应该是90G么?为何是75G?
  2. Grafana->TiKV-Detail->Cluster->Memory 显示 TIKV 一共使用了 111G 内存,那剩下的 36G(即111-75)被谁用了?在哪个面板查?

Block Cache Size != tikv server memory ,Block Cache Size 是仅仅指的缓存值,而且第一个图中描述的是 max,实际上只用了 75% 左右

第二个问题,实际上的值是相等的
tikv 实例最大是 1118.GB,当前是 109.3GB
然后,top 监控图是 当前占用 87.1%, 然后总数 13152176 ,相乘之后,和上面的值一致…

剩下的内存,就留给系统占用了,有部分是系统缓存,有部分是预留,有部分是空闲状态
参考 top 上面描述的信息

你查下 block cache 命中率配置 (参数: block-cache.capacity)
https://docs.pingcap.com/zh/tidb/dev/rocksdb-overview#rocksdb-的内存占用

这个有点儿答非所问吧?

  1. 疑问一:目前看不出有什么问题,直到现在 cache capacity 也没打上去吗?
  2. 疑问一:我理解主要是想看内存消耗所在的组件名称,基本就是 raft、grpc 这些位置,还有 struct、channel 等结构及 runtime 本身需要消耗的内存。可以下面 2 个 面板结合着看。
    tikv-details --> server --> Memory trace
    tikv-details --> memory -->Allocator Stats

确认了一下配置,75G 是通过 SET 命令设置的。90G是集群拓扑配置文件中的设置。看表现,应该是SET设置的值优先级高于集群配置文件中的设置。

set config? 这个是在线修改,其实二者无所谓优先级,但是 set config 不会修改 tiup 的持久化数据,即:reload 该配置会被刷掉。
那问题就解了,记得标记,谢谢

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。