Skip to content

Commit b8dc88b

Browse files
committed
add luajit platform metrics
After tarantool/tarantool#5187 tarantool could report luajit platform metrics. This patch exports them as default metrics. For detailed description of each metric see tarantool/doc#1597. Closes #127
1 parent e165332 commit b8dc88b

File tree

5 files changed

+77
-0
lines changed

5 files changed

+77
-0
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Added
9+
- Luajit platform metrics
810

911
## [0.5.0] - 2020-09-18
1012
### Added

metrics-scm-1.rockspec

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ build = {
3838
['metrics.default_metrics.tarantool'] = 'metrics/default_metrics/tarantool/init.lua',
3939
['metrics.default_metrics.tarantool.fibers'] = 'metrics/default_metrics/tarantool/fibers.lua',
4040
['metrics.default_metrics.tarantool.info'] = 'metrics/default_metrics/tarantool/info.lua',
41+
['metrics.default_metrics.tarantool.luajit'] = 'metrics/default_metrics/tarantool/luajit.lua',
4142
['metrics.default_metrics.tarantool.memory'] = 'metrics/default_metrics/tarantool/memory.lua',
4243
['metrics.default_metrics.tarantool.network'] = 'metrics/default_metrics/tarantool/network.lua',
4344
['metrics.default_metrics.tarantool.operations'] = 'metrics/default_metrics/tarantool/operations.lua',

metrics/default_metrics/tarantool/init.lua

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ local default_metrics = {
1111
require('metrics.default_metrics.tarantool.memory'),
1212
require('metrics.default_metrics.tarantool.spaces'),
1313
require('metrics.default_metrics.tarantool.fibers'),
14+
require('metrics.default_metrics.tarantool.luajit'),
1415
}
1516

1617
local function enable()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
local metrics = require('metrics')
2+
3+
local has_mics_module, misc = pcall(require, 'misc')
4+
5+
local gauges_storage = {}
6+
7+
local LJ_PREFIX = 'lj_'
8+
9+
local function prefix_name(name)
10+
return LJ_PREFIX .. name
11+
end
12+
13+
local function set_gauge(name, description, value, labels)
14+
if (gauges_storage[name] == nil) then
15+
gauges_storage[name] = metrics.gauge(prefix_name(name), description)
16+
end
17+
18+
gauges_storage[name]:set(value, labels or {})
19+
end
20+
21+
local function update_lj_metrics()
22+
-- Details: https://github.com/tarantool/doc/issues/1597
23+
local lj_metrics = misc.getmetrics()
24+
set_gauge('gc_freed', 'Total amount of freed memory',
25+
lj_metrics.gc_freed)
26+
set_gauge('strhash_hit', 'Number of strings being interned',
27+
lj_metrics.strhash_hit)
28+
set_gauge('gc_steps_atomic', 'Count of incremental GC steps (atomic state)',
29+
lj_metrics.gc_steps_atomic)
30+
set_gauge('strhash_miss', 'Total number of strings allocations during the platform lifetime',
31+
lj_metrics.strhash_miss)
32+
set_gauge('gc_steps_sweepstring', 'Count of incremental GC steps (sweepstring state)',
33+
lj_metrics.gc_steps_sweepstring)
34+
set_gauge('gc_strnum', 'Amount of allocated string objects',
35+
lj_metrics.gc_strnum)
36+
set_gauge('gc_tabnum', 'Amount of allocated table objects',
37+
lj_metrics.gc_tabnum)
38+
set_gauge('gc_cdatanum', 'Amount of allocated cdata objects',
39+
lj_metrics.gc_cdatanum)
40+
set_gauge('jit_snap_restore', 'Overall number of snap restores',
41+
lj_metrics.jit_snap_restore)
42+
set_gauge('gc_total', 'Memory currently allocated',
43+
lj_metrics.gc_total)
44+
set_gauge('gc_udatanum', 'Amount of allocated udata objects',
45+
lj_metrics.gc_udatanum)
46+
set_gauge('gc_steps_finalize', 'Count of incremental GC steps (finalize state)',
47+
lj_metrics.gc_steps_finalize)
48+
set_gauge('gc_allocated', 'Total amount of allocated memory',
49+
lj_metrics.gc_allocated)
50+
set_gauge('jit_trace_num', 'Amount of JIT traces',
51+
lj_metrics.jit_trace_num)
52+
set_gauge('gc_steps_sweep', 'Count of incremental GC steps (sweep state)',
53+
lj_metrics.gc_steps_sweep)
54+
set_gauge('jit_trace_abort', 'Overall number of abort traces',
55+
lj_metrics.jit_trace_abort)
56+
set_gauge('jit_mcode_size', 'Total size of all allocated machine code areas',
57+
lj_metrics.jit_mcode_size)
58+
set_gauge('gc_steps_propagate', 'Count of incremental GC steps (propagate state)',
59+
lj_metrics.gc_steps_propagate)
60+
set_gauge('gc_steps_pause', 'Count of incremental GC steps (pause state)',
61+
lj_metrics.gc_steps_pause)
62+
end
63+
64+
local update = function() end
65+
66+
if has_mics_module and misc.getmetrics ~= nil then
67+
update = update_lj_metrics
68+
end
69+
70+
return {
71+
update = update,
72+
}

rpm/tarantool-metrics.spec

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ cp -rv cartridge %{br_luapkgdir}
4949
%{luapkgdir}/metrics/default_metrics/tarantool/fibers.lua
5050
%{luapkgdir}/metrics/default_metrics/tarantool/info.lua
5151
%{luapkgdir}/metrics/default_metrics/tarantool/init.lua
52+
%{luapkgdir}/metrics/default_metrics/tarantool/luajit.lua
5253
%{luapkgdir}/metrics/default_metrics/tarantool/memory.lua
5354
%{luapkgdir}/metrics/default_metrics/tarantool/network.lua
5455
%{luapkgdir}/metrics/default_metrics/tarantool/operations.lua

0 commit comments

Comments
 (0)