Skip to content

Commit 5058d2d

Browse files
committed
Add info re new vinyl counter box.stat.vinyl().memory.tuple
1 parent 41a65d6 commit 5058d2d

File tree

1 file changed

+78
-69
lines changed
  • doc/reference/reference_lua/box_stat

1 file changed

+78
-69
lines changed

doc/reference/reference_lua/box_stat/vinyl.rst

Lines changed: 78 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -19,44 +19,6 @@ box.stat.vinyl()
1919
- 1047632
2020
...
2121
22-
.. _box_introspection-box_stat_vinyl_regulator:
23-
24-
box.stat.vinyl().regulator
25-
--------------------------
26-
The vinyl regulator decides when to take or delay actions for
27-
disk IO, grouping activity in batches so that it is
28-
consistent and efficient. The regulator is invoked by
29-
the vinyl scheduler, once per second, and updates
30-
related variables whenever it is invoked.
31-
32-
* ``box.stat.vinyl().regulator.dump_bandwidth`` is
33-
the estimated average rate at which dumps are done.
34-
Initially this will appear as 10485760 (10 megabytes per second).
35-
Only significant dumps (larger than one megabyte) are used for estimating.
36-
37-
* ``box.stat.vinyl().regulator.dump_watermark``
38-
is the point when dumping must occur.
39-
The value is slightly smaller than the amount of memory
40-
that is allocated for vinyl trees, which is the
41-
:ref:`vinyl_memory <cfg_storage-vinyl_memory>` parameter.
42-
43-
* ``box.stat.vinyl().regulator.write_rate``
44-
is the actual average rate at which recent writes to disk are done.
45-
Averaging is done over a 5-second time window, so if there has
46-
been no activity for 5 seconds then ``regulator.write_rate = 0``.
47-
The ``write_rate`` may be slowed when a dump is in progress
48-
or when the user has set
49-
:ref:`snap_io_rate_limit <cfg_binary_logging_snapshots-snap_io_rate_limit>`.
50-
51-
* ``box.stat.vinyl().regulator.rate_limit`` is the write rate limit,
52-
in bytes per second, imposed on transactions by
53-
the regulator based on the observed dump/compaction performance.
54-
55-
* ``box.stat.vinyl().regulator.blocked_writers`` is the number of fibers
56-
currently blocked waiting for vinyl :ref:`L0 memory <engines-algorithm_filling_lsm>`
57-
quota.
58-
59-
6022
.. _box_introspection-box_stat_vinyl_disk:
6123

6224
box.stat.vinyl().disk
@@ -110,38 +72,44 @@ bloom filter predicts their presence in a run file) --
11072
that statistic can be found with
11173
:doc:`/reference/reference_lua/box_index/stat`.
11274

113-
.. _box_introspection-box_stat_vinyl_tx:
75+
.. _box_introspection-box_stat_vinyl_regulator:
11476

115-
box.stat.vinyl().tx
116-
-------------------
117-
This is about requests that affect transactional activity
118-
("tx" is used here as an abbreviation for "transaction"):
77+
box.stat.vinyl().regulator
78+
--------------------------
79+
The vinyl regulator decides when to take or delay actions for
80+
disk IO, grouping activity in batches so that it is
81+
consistent and efficient. The regulator is invoked by
82+
the vinyl scheduler, once per second, and updates
83+
related variables whenever it is invoked.
11984

120-
* ``box.stat.vinyl().tx.conflict``
121-
counts conflicts that caused a transaction to roll back.
122-
* ``box.stat.vinyl().tx.commit``
123-
is the count of commits (successful transaction ends).
124-
It includes implicit commits, for example any insert causes a commit unless
125-
it is within a begin-end block.
126-
* ``box.stat.vinyl().tx.rollback``
127-
is the count of rollbacks (unsuccessful transaction ends).
128-
This is not merely a count of explicit
129-
:doc:`/reference/reference_lua/box_txn_management/rollback` requests --
130-
it includes requests that ended in errors.
131-
For example, after an attempted insert request that causes
132-
a "Duplicate key exists in unique index" error, ``tx.rollback``
133-
is incremented.
134-
* ``box.stat.vinyl().tx.statements``
135-
will usually be 0.
136-
* ``box.stat.vinyl().tx.transactions``
137-
is the number of transactions that are currently running.
138-
* ``box.stat.vinyl().tx.gap_locks``
139-
is the number of gap locks that are outstanding during execution of a request.
140-
For a low-level description of Tarantool's implementation of gap locking, see
141-
`Gap locks in Vinyl transaction manager <https://github.com/tarantool/tarantool/issues/2671>`_.
142-
* ``box.stat.vinyl().tx.read_views``
143-
shows whether a transaction has entered a read-only state
144-
to avoid conflict temporarily. This will usually be 0.
85+
* ``box.stat.vinyl().regulator.dump_bandwidth`` is
86+
the estimated average rate at which dumps are done.
87+
Initially this will appear as 10485760 (10 megabytes per second).
88+
Only significant dumps (larger than one megabyte) are used for estimating.
89+
90+
* ``box.stat.vinyl().regulator.dump_watermark``
91+
is the point when dumping must occur.
92+
The value is slightly smaller than the amount of memory
93+
that is allocated for vinyl trees, which is the
94+
:ref:`vinyl_memory <cfg_storage-vinyl_memory>` parameter.
95+
96+
* ``box.stat.vinyl().regulator.write_rate``
97+
is the actual average rate at which recent writes to disk are done.
98+
Averaging is done over a 5-second time window, so if there has
99+
been no activity for 5 seconds then ``regulator.write_rate = 0``.
100+
The ``write_rate`` may be slowed when a dump is in progress
101+
or when the user has set
102+
:ref:`snap_io_rate_limit <cfg_binary_logging_snapshots-snap_io_rate_limit>`.
103+
104+
* ``box.stat.vinyl().regulator.rate_limit`` is the write rate limit,
105+
in bytes per second, imposed on transactions by
106+
the regulator based on the observed dump/compaction performance.
107+
108+
* ``box.stat.vinyl().regulator.blocked_writers`` is the number of fibers
109+
currently blocked waiting for vinyl :ref:`L0 memory <engines-algorithm_filling_lsm>`
110+
quota.
111+
112+
.. _box_introspection-box_stat_vinyl_scheduler:
145113

146114
box.stat.vinyl().scheduler
147115
--------------------------
@@ -190,4 +158,45 @@ for dumping or compaction:
190158

191159
A dump will also occur during a
192160
:doc:`snapshot </reference/reference_lua/box_snapshot>` operation.
193-
161+
162+
.. _box_introspection-box_stat_vinyl_memory_tuple:
163+
164+
box.stat.vinyl().memory.tuple
165+
-----------------------------
166+
Vinyl tuples returned to the user are allocated with `malloc()`, and they may be
167+
pinned by Lua indefinitely. This counter shows the total size of memory
168+
(in bytes) occupied by Vinyl tuples. It includes cached tuples and tuples pinned
169+
by the Lua world.
170+
171+
.. _box_introspection-box_stat_vinyl_tx:
172+
173+
box.stat.vinyl().tx
174+
-------------------
175+
This is about requests that affect transactional activity
176+
("tx" is used here as an abbreviation for "transaction"):
177+
178+
* ``box.stat.vinyl().tx.conflict``
179+
counts conflicts that caused a transaction to roll back.
180+
* ``box.stat.vinyl().tx.commit``
181+
is the count of commits (successful transaction ends).
182+
It includes implicit commits, for example any insert causes a commit unless
183+
it is within a begin-end block.
184+
* ``box.stat.vinyl().tx.rollback``
185+
is the count of rollbacks (unsuccessful transaction ends).
186+
This is not merely a count of explicit
187+
:doc:`/reference/reference_lua/box_txn_management/rollback` requests --
188+
it includes requests that ended in errors.
189+
For example, after an attempted insert request that causes
190+
a "Duplicate key exists in unique index" error, ``tx.rollback``
191+
is incremented.
192+
* ``box.stat.vinyl().tx.statements``
193+
will usually be 0.
194+
* ``box.stat.vinyl().tx.transactions``
195+
is the number of transactions that are currently running.
196+
* ``box.stat.vinyl().tx.gap_locks``
197+
is the number of gap locks that are outstanding during execution of a request.
198+
For a low-level description of Tarantool's implementation of gap locking, see
199+
`Gap locks in Vinyl transaction manager <https://github.com/tarantool/tarantool/issues/2671>`_.
200+
* ``box.stat.vinyl().tx.read_views``
201+
shows whether a transaction has entered a read-only state
202+
to avoid conflict temporarily. This will usually be 0.

0 commit comments

Comments
 (0)