Skip to content

Commit 365a573

Browse files
yikekelilin90
authored andcommitted
op-guide, tools: add descriptions for shared block cache (#1329)
* op-guide, tools: add descriptions for shared block cache Via: pingcap/docs#1114 PTAL * update tikv-control from #1134 pr Via: pingcap/docs#1134 * unify display * Update tune-tikv.md * Update tune-tikv.md * Update tikv-control.md * Update tune-tikv.md
1 parent ee34c99 commit 365a573

File tree

3 files changed

+34
-19
lines changed

3 files changed

+34
-19
lines changed

op-guide/dashboard-tikv-info.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ category: monitoring
357357
- Write stall duration:由于 write stall 造成的时间开销,正常情况下应为 0
358358
- Memtable size:每个 CF 的 memtable 的大小
359359
- Memtable hit:memtable 的命中率
360-
- Block cache size:每个 CF 的 block cache 的大小
360+
- Block cache size:block cache 的大小。如果将 `shared block cache` 禁用,即为每个 CF 的 block cache 的大小
361361
- Block cache hit:block cache 的命中率
362362
- Block cache flow:不同 block cache 操作的流量
363363
- Block cache operations 不同 block cache 操作的个数
@@ -393,7 +393,7 @@ category: monitoring
393393
- Write stall duration:由于 write stall 造成的时间开销,正常情况下应为 0
394394
- Memtable size:每个 CF 的 memtable 的大小
395395
- Memtable hit:memtable 的命中率
396-
- Block cache size:每个 CF 的 block cache 的大小
396+
- Block cache size:block cache 的大小。如果将 `shared block cache` 禁用,即为每个 CF 的 block cache 的大小
397397
- Block cache hit:block cache 的命中率
398398
- Block cache flow:不同 block cache 操作的流量
399399
- Block cache operations 不同 block cache 操作的个数

op-guide/tune-tikv.md

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ TiKV 使用了 RocksDB 的 `Column Families` (CF) 特性。
2121

2222
- `default` CF 主要存储的是 Raft log,与其对应的参数位于 `[raftdb.defaultcf]` 项中。
2323

24-
每个 CF 都有单独的 `block-cache`,用于缓存数据块,加速 RocksDB 的读取速度,block-cache 的大小通过参数 `block-cache-size` 控制,block-cache-size 越大,能够缓存的热点数据越多,对读取操作越有利,同时占用的系统内存也会越多。
24+
在 TiKV 3.0 版本后,所有的 CF 默认共同使用一个 block cache 实例。通过在 `[storage.block-cache]` 下设置 `capacity` 参数,你可以配置该 block cache 的大小。block cache 越大,能够缓存的热点数据越多,读取数据越容易,同时占用的系统内存也越多。如果要为每个 CF 使用单独的 block cache 实例,需要在 `[storage.block-cache]` 下设置 `shared=false`,并为每个 CF 配置单独的 block cache 大小。例如,可以在 `[rocksdb.writecf]` 下设置 `block-cache-size` 参数来配置 `write` CF 的大小。
25+
26+
在 TiKV 3.0 之前的版本中,不支持使用 `shared block cache`,因此需要为每个 CF 单独配置 block cache。
2527

2628
每个 CF 有各自的 `write-buffer`,大小通过 `write-buffer-size` 控制。
2729

@@ -60,6 +62,27 @@ log-level = "info"
6062
# 参数调大,增加写线程的个数。
6163
# scheduler-worker-pool-size = 4
6264

65+
[storage.block-cache]
66+
## 是否为 RocksDB 的所有 CF 都创建一个 `shared block cache`。
67+
##
68+
## RocksDB 使用 block cache 来缓存未压缩的数据块。较大的 block cache 可以加快读取速度。
69+
## 推荐开启 `shared block cache` 参数。这样只需要设置全部缓存大小,使配置过程更加方便。
70+
## 在大多数情况下,可以通过 LRU 算法在各 CF 间自动平衡缓存用量。
71+
##
72+
## `storage.block-cache` 会话中的其余配置仅在开启 `shared block cache` 时起作用。
73+
# shared = true
74+
## `shared block cache` 的大小。正常情况下应设置为系统全部内存的 30%-50%。
75+
## 如果未设置该参数,则由以下字段或其默认值的总和决定。
76+
##
77+
## * rocksdb.defaultcf.block-cache-size 或系统全部内存的 25%
78+
## * rocksdb.writecf.block-cache-size 或系统全部内存的 15%
79+
## * rocksdb.lockcf.block-cache-size 或系统全部内存的 2%
80+
## * raftdb.defaultcf.block-cache-size 或系统全部内存的 2%
81+
##
82+
## 要在单个物理机上部署多个 TiKV 节点,需要显式配置该参数。
83+
## 否则,TiKV 中可能会出现 OOM 错误。
84+
# capacity = "1GB"
85+
6386
[pd]
6487
# pd 的地址
6588
# endpoints = ["127.0.0.1:2379","127.0.0.2:2379","127.0.0.3:2379"]
@@ -176,10 +199,6 @@ max-bytes-for-level-base = "512MB"
176199
# 影响,target-file-size-base 参数用于控制 level1-level6 单个 sst 文件的大小。
177200
target-file-size-base = "32MB"
178201

179-
# 在不配置该参数的情况下,TiKV 会将该值设置为系统总内存量的 40%。如果需要在单个物理机上部署多个
180-
# TiKV 节点,需要显式配置该参数,否则 TiKV 容易出现 OOM 的问题。
181-
# block-cache-size = "1GB"
182-
183202
[rocksdb.writecf]
184203
# 保持和 rocksdb.defaultcf.compression-per-level 一致。
185204
compression-per-level = ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"]
@@ -193,11 +212,6 @@ min-write-buffer-number-to-merge = 1
193212
max-bytes-for-level-base = "512MB"
194213
target-file-size-base = "32MB"
195214

196-
# 在不配置该参数的情况下,TiKV 会将该值设置为系统总内存量的 15%。如果需要在单个物理机上部署多个
197-
# TiKV 节点,需要显式配置该参数。版本信息(MVCC)相关的数据以及索引相关的数据都记录在 write 这
198-
# 个 CF 里面,如果业务的场景下单表索引较多,可以将该参数设置的更大一点。
199-
# block-cache-size = "256MB"
200-
201215
[raftdb]
202216
# RaftDB 能够打开的最大文件句柄数。
203217
# max-open-files = 40960
@@ -220,9 +234,6 @@ min-write-buffer-number-to-merge = 1
220234
# 保持和 rocksdb.defaultcf.max-bytes-for-level-base 一致。
221235
max-bytes-for-level-base = "512MB"
222236
target-file-size-base = "32MB"
223-
224-
# 通常配置在 256MB 到 2GB 之间,通常情况下使用默认值就可以了,但如果系统资源比较充足可以适当调大点。
225-
block-cache-size = "256MB"
226237
```
227238

228239
## TiKV 内存使用情况

tools/tikv-control.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,18 @@ $ tikv-ctl --host 127.0.0.1:20160 region-properties -r 2
198198
199199
使用 `modify-tikv-config` 命令可以动态修改配置参数,暂时仅支持对于 RocksDB 相关参数的动态更改。
200200
201-
- `-m` 可以指定要修改的 RocksDB,有 `kvdb``raftdb` 两个值可以选择
202-
- `-n` 用于指定配置名。配置名可以参考 [TiKV 配置模版](https://github.com/pingcap/tikv/blob/master/etc/config-template.toml#L213-L500)中 `[rocksdb]``[raftdb]` 下的参数,分别对应 `kvdb``raftdb`。同时,还可以通过 `default|write|lock + . + 参数名` 的形式来指定的不同 CF 的配置(对于 `kvdb``default|write|lock` 可以选择,对于 `raftdb` 仅有 `default` 可以选择。
201+
- `-m` 用于指定要修改的模块,有 `storage``kvdb``raftdb` 三个值可以选择
202+
- `-n` 用于指定配置名。配置名可以参考 [TiKV 配置模版](https://github.com/pingcap/tikv/blob/master/etc/config-template.toml#L213-L500)中 `[storage]``[rocksdb]``[raftdb]` 下的参数,分别对应 `storage``kvdb``raftdb`。同时,还可以通过 `default|write|lock + . + 参数名` 的形式来指定的不同 CF 的配置(对于 `kvdb``default|write|lock` 可以选择,对于 `raftdb` 仅有 `default` 可以选择。
203203
- `-v` 用于指定配置值。
204204
205205
```bash
206+
# 设置 `shared block cache` 的大小。
207+
$ tikv-ctl modify-tikv-config -m storage -n block_cache.capacity -v 10GB
208+
success!
209+
# 当禁用 `shared block cache` 时,为 `write` CF 设置 `block cache size`。
210+
$ tikv-ctl modify-tikv-config -m kvdb -n write.block_cache_size -v 256MB
211+
success!
206212
$ tikv-ctl modify-tikv-config -m kvdb -n max_background_jobs -v 8
207-
success!
208-
$ tikv-ctl modify-tikv-config -m kvdb -n write.block-cache-size -v 256MB
209213
success!
210214
$ tikv-ctl modify-tikv-config -m raftdb -n default.disable_auto_compactions -v true
211215
success!

0 commit comments

Comments
 (0)