[PATCH 00/12] vinyl: statistics improvements
Vladimir Davydov
vdavydov.dev at gmail.com
Tue Jan 15 17:17:09 MSK 2019
This patch set adds a few metrics necessary for implementing compaction
randomization and transaction throttling, but it's useful on its own,
because it makes box.stat.vinyl() a little bit more useful when it comes
to performance analysis. Here's an example of box.stat.vinyl() output
with this patch set applied:
---
- tx:
conflict: 0
commit: 1979052
rollback: 0
statements: 2
transactions: 1
gap_locks: 0
read_views: 0
regulator:
dump_bandwidth: 10485760
dump_watermark: 20023725
write_rate: 7085581
memory:
tuple_cache: 0
tx: 2388
level0: 19394239
page_index: 4422529
bloom_filter: 1517177
disk:
data_compacted: 500330587
data: 762493299
index: 41814873
scheduler:
dump_time: 186.61679973663
tasks_inprogress: 3
dump_output: 2115930554
compaction_queue: 213022513
compaction_output: 4130054964
compaction_time: 737.99443827965
dump_count: 136
tasks_failed: 0
tasks_completed: 1839
dump_input: 2061676471
compaction_input: 5646476938
...
This patch set adds the 'scheduler' section, which exposes dump and
compaction related statistics, and 'disk.data_compacted', which is
needed for evaluating space amplification. See comments to individual
patches for more details.
Patches are mostly trivial - they primarily move pieces of code around
and expose internal counters.
What's still missing:
- disk compression ratio
- iterator statistics (in particular, read amplification)
However, they aren't required for compaction randomization or throttling
and so I leave them for later.
https://github.com/tarantool/tarantool/commits/dv/vy-stat-improvements
Vladimir Davydov (12):
test: rename vinyl/info to vinyl/stat
test: split vinyl/errinj
vinyl: rename dump/compact in/out to input/output
vinyl: rename compact to compaction
vinyl: bump range version in vy_range.c
vinyl: don't add dropped LSM trees to the scheduler during recovery
vinyl: move global dump/compaction statistics to scheduler
vinyl: add dump count to global scheduler statistics
vinyl: don't account secondary indexes to scheduler.dump_input
vinyl: add task accounting to global scheduler statistics
vinyl: add dump/compaction time to statistics
vinyl: add last level size to statistics
src/box/vinyl.c | 121 +--
src/box/vy_lsm.c | 88 +-
src/box/vy_lsm.h | 55 +-
src/box/vy_range.c | 27 +-
src/box/vy_range.h | 16 +-
src/box/vy_scheduler.c | 207 +++--
src/box/vy_scheduler.h | 15 +-
src/box/vy_stat.h | 57 +-
test/vinyl/ddl.result | 2 +-
test/vinyl/ddl.test.lua | 2 +-
test/vinyl/deferred_delete.result | 16 +-
test/vinyl/deferred_delete.test.lua | 16 +-
test/vinyl/errinj.result | 1168 +--------------------------
test/vinyl/errinj.test.lua | 504 +-----------
test/vinyl/errinj_ddl.result | 595 ++++++++++++++
test/vinyl/errinj_ddl.test.lua | 260 ++++++
test/vinyl/errinj_stat.result | 407 ++++++++++
test/vinyl/errinj_stat.test.lua | 129 +++
test/vinyl/errinj_tx.result | 435 ++++++++++
test/vinyl/errinj_tx.test.lua | 194 +++++
test/vinyl/errinj_vylog.result | 35 +
test/vinyl/errinj_vylog.test.lua | 18 +
test/vinyl/recovery_quota.result | 4 +-
test/vinyl/recovery_quota.test.lua | 4 +-
test/vinyl/snap_io_rate.result | 2 +-
test/vinyl/snap_io_rate.test.lua | 2 +-
test/vinyl/{info.lua => stat.lua} | 0
test/vinyl/{info.result => stat.result} | 493 ++++++++---
test/vinyl/{info.test.lua => stat.test.lua} | 93 ++-
test/vinyl/suite.ini | 2 +-
test/vinyl/update_optimize.result | 4 +-
test/vinyl/update_optimize.test.lua | 4 +-
test/vinyl/write_iterator.result | 20 +-
test/vinyl/write_iterator.test.lua | 20 +-
34 files changed, 2962 insertions(+), 2053 deletions(-)
create mode 100644 test/vinyl/errinj_ddl.result
create mode 100644 test/vinyl/errinj_ddl.test.lua
create mode 100644 test/vinyl/errinj_stat.result
create mode 100644 test/vinyl/errinj_stat.test.lua
create mode 100644 test/vinyl/errinj_tx.result
create mode 100644 test/vinyl/errinj_tx.test.lua
rename test/vinyl/{info.lua => stat.lua} (100%)
rename test/vinyl/{info.result => stat.result} (80%)
rename test/vinyl/{info.test.lua => stat.test.lua} (80%)
--
2.11.0
More information about the Tarantool-patches
mailing list