[Tarantool-patches] [PATCH v3 2/2] misc: add C and Lua API for platform metrics
Sergey Kaplun
skaplun at tarantool.org
Mon Oct 5 09:39:33 MSK 2020
On 20.09.20, Sergey Kaplun wrote:
> This patch introduces both C and Lua API for LuaJIT platform
<snipped>
>
This patch isn't relevant. You can see actual version here [1].
You can apply -R corresponding diff to return to this version.
==================================================================
diff --git a/src/lib_misc.c b/src/lib_misc.c
index 287b059..ef11237 100644
--- a/src/lib_misc.c
+++ b/src/lib_misc.c
@@ -42,10 +42,6 @@ LJLIB_CF(misc_getmetrics)
setnumfield(L, m, "gc_udatanum", metrics.gc_udatanum);
setnumfield(L, m, "gc_cdatanum", metrics.gc_cdatanum);
- setnumfield(L, m, "gc_whitenum", metrics.gc_whitenum);
- setnumfield(L, m, "gc_graynum", metrics.gc_graynum);
- setnumfield(L, m, "gc_blacknum", metrics.gc_blacknum);
-
setnumfield(L, m, "gc_total", metrics.gc_total);
setnumfield(L, m, "gc_freed", metrics.gc_freed);
setnumfield(L, m, "gc_allocated", metrics.gc_allocated);
diff --git a/src/lj_mapi.c b/src/lj_mapi.c
index a3fb645..7645a44 100644
--- a/src/lj_mapi.c
+++ b/src/lj_mapi.c
@@ -36,10 +36,6 @@ LUAMISC_API void luaM_metrics(lua_State *L, struct luam_Metrics *metrics)
metrics->gc_cdatanum = 0;
#endif
- metrics->gc_whitenum = gc->whitenum;
- metrics->gc_graynum = gc->graynum;
- metrics->gc_blacknum = gc->blacknum;
-
metrics->gc_total = gc->total;
metrics->gc_freed = gc->freed;
metrics->gc_allocated = gc->allocated;
diff --git a/src/lmisclib.h b/src/lmisclib.h
index e4970b5..e2d1909 100644
--- a/src/lmisclib.h
+++ b/src/lmisclib.h
@@ -27,13 +27,6 @@ struct luam_Metrics {
/* Amount of allocated cdata objects. */
size_t gc_cdatanum;
- /* Amount of white objects. */
- size_t gc_whitenum;
- /* Amount of gray objects. */
- size_t gc_graynum;
- /* Amount of black objects. */
- size_t gc_blacknum;
-
/* Memory currently allocated. */
size_t gc_total;
/* Total amount of freed memory. */
diff --git a/test/clib-misclib-getmetrics.test.lua b/test/clib-misclib-getmetrics.test.lua
index 840840c..34adaba 100755
--- a/test/clib-misclib-getmetrics.test.lua
+++ b/test/clib-misclib-getmetrics.test.lua
@@ -14,26 +14,12 @@ local jit_opt_default_minstitch = 0
local tap = require('tap')
local test = tap.test("clib-misc-getmetrics")
-test:plan(13)
+test:plan(10)
local testgetmetrics = require("testgetmetrics")
test:ok(testgetmetrics.base())
test:ok(testgetmetrics.gc_allocated_freed())
-test:ok(testgetmetrics.gc_colors_base())
-test:ok(testgetmetrics.gc_colors_strempty())
-
--- Upvalues are never gray.
-tbar_t = {}
-test:ok(testgetmetrics.gc_colors_tbar(function()
- local tabnew = require"table.new"
- for i =1, 100 do
- tbar_t.x = tabnew(i,0)
- end
- collectgarbage("collect")
- tbar_t = nil
-end))
-
test:ok(testgetmetrics.gc_steps())
test:ok(testgetmetrics.objcount(function()
diff --git a/test/clib-misclib-getmetrics/testgetmetrics.c b/test/clib-misclib-getmetrics/testgetmetrics.c
index 85f0505..32802d2 100644
--- a/test/clib-misclib-getmetrics/testgetmetrics.c
+++ b/test/clib-misclib-getmetrics/testgetmetrics.c
@@ -20,10 +20,6 @@ static int base(lua_State *L)
assert((ssize_t)metrics.gc_udatanum >= 0);
assert((ssize_t)metrics.gc_cdatanum >= 0);
- assert((ssize_t)metrics.gc_whitenum >= 0);
- assert((ssize_t)metrics.gc_graynum >= 0);
- assert((ssize_t)metrics.gc_blacknum >= 0);
-
assert((ssize_t)metrics.gc_total >= 0);
assert((ssize_t)metrics.gc_freed >= 0);
assert((ssize_t)metrics.gc_allocated >= 0);
@@ -63,44 +59,6 @@ static int gc_allocated_freed(lua_State *L)
return 1;
}
-static int gc_colors_base(lua_State *L)
-{
- struct luam_Metrics metrics;
- lua_gc(L, LUA_GCCOLLECT, 0);
- luaM_metrics(L, &metrics);
- /* There are no non-white objects after full gc cycle. */
- assert(metrics.gc_blacknum == 0);
- assert(metrics.gc_graynum == 0);
- lua_pushboolean(L, 1);
- return 1;
-}
-
-static int gc_colors_strempty(lua_State *L)
-{
- /*
- * Empty string is specially recolored at the end
- * of atomic phase.
- */
- lua_pushstring(L, "");
- /* Check that none of the internal asserts will fail. */
- for (int i = 0; i < 100; i++)
- lua_gc(L, LUA_GCCOLLECT, 0);
- lua_pop(L, 1);
- lua_pushboolean(L, 1);
- return 1;
-}
-
-static int gc_colors_tbar(lua_State *L)
-{
- int n = lua_gettop(L);
- if (n != 1 || !lua_isfunction(L, 1))
- luaL_error(L, "incorrect arguments: 1 function is required");
- /* Check that none of the internal asserts will fail. */
- lua_call(L, 0, 0);
- lua_pushboolean(L, 1);
- return 1;
-}
-
static int gc_steps(lua_State *L)
{
struct luam_Metrics oldm, newm;
@@ -269,9 +227,6 @@ static int tracenum_base(lua_State *L)
static const struct luaL_Reg testgetmetrics[] = {
{"base", base},
{"gc_allocated_freed", gc_allocated_freed},
- {"gc_colors_base", gc_colors_base},
- {"gc_colors_strempty", gc_colors_strempty},
- {"gc_colors_tbar", gc_colors_tbar},
{"gc_steps", gc_steps},
{"objcount", objcount},
{"snap_restores", snap_restores},
diff --git a/test/lib-misc-getmetrics.test.lua b/test/lib-misc-getmetrics.test.lua
index 66423ab..2859e26 100755
--- a/test/lib-misc-getmetrics.test.lua
+++ b/test/lib-misc-getmetrics.test.lua
@@ -7,7 +7,7 @@
local tap = require('tap')
local test = tap.test("lib-misc-getmetrics")
-test:plan(13)
+test:plan(10)
local jit_opt_default_hotloop = 56
local jit_opt_default_hotexit = 10
@@ -16,7 +16,7 @@ local jit_opt_default_minstitch = 0
-- Test Lua API.
test:test("base", function(subtest)
- subtest:plan(22)
+ subtest:plan(19)
local metrics = misc.getmetrics()
subtest:ok(metrics.strhash_hit >= 0)
subtest:ok(metrics.strhash_miss >= 0)
@@ -26,10 +26,6 @@ test:test("base", function(subtest)
subtest:ok(metrics.gc_udatanum >= 0)
subtest:ok(metrics.gc_cdatanum >= 0)
- subtest:ok(metrics.gc_whitenum >= 2)
- subtest:ok(metrics.gc_graynum >= 0)
- subtest:ok(metrics.gc_blacknum >= 0)
-
subtest:ok(metrics.gc_total >= 0)
subtest:ok(metrics.gc_freed >= 0)
subtest:ok(metrics.gc_allocated >= 0)
@@ -47,43 +43,6 @@ test:test("base", function(subtest)
subtest:ok(metrics.jit_trace_num >= 0)
end)
-test:test("gc-colors-base", function(subtest)
- subtest:plan(2)
-
- -- Force up garbage collect all dead objects.
- collectgarbage("collect")
-
- -- There are no non-white objects after full gc cycle.
- local metrics = misc.getmetrics()
- subtest:is(metrics.gc_graynum, 0)
- subtest:is(metrics.gc_blacknum, 0)
-end)
-
-test:test("gc-colors-stremty", function(subtest)
- subtest:plan(1)
- -- Empty string is specially recolored at the end
- -- of atomic phase.
- local strempty = ""
- -- Check that none of the internal asserts will fail.
- for i=1, 100 do
- collectgarbage("collect")
- end
- subtest:ok(true, "no assertion failed")
-end)
-
--- Upvalues are never gray.
-tbar_t = {}
-test:test("gc-colors-tbar", function(subtest)
- subtest:plan(1)
- local tabnew = require"table.new"
- for i =1, 100 do
- tbar_t.x = tabnew(i,0)
- end
- collectgarbage("collect")
- tbar_t = nil
- subtest:ok(true, "no assertion failed")
-end)
-
test:test("gc-allocated-freed", function(subtest)
subtest:plan(1)
@@ -404,26 +363,26 @@ test:test("strhash", function(subtest)
local new_metrics = misc.getmetrics()
-- Do not use test:ok to avoid extra strhash hits/misses.
- assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 22)
+ assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 19)
assert(new_metrics.strhash_miss - old_metrics.strhash_miss == 0)
old_metrics = new_metrics
local str1 = "strhash".."_hit"
new_metrics = misc.getmetrics()
- assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 23)
+ assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 20)
assert(new_metrics.strhash_miss - old_metrics.strhash_miss == 0)
old_metrics = new_metrics
new_metrics = misc.getmetrics()
- assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 22)
+ assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 19)
assert(new_metrics.strhash_miss - old_metrics.strhash_miss == 0)
old_metrics = new_metrics
local str2 = "new".."string"
new_metrics = misc.getmetrics()
- assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 22)
+ assert(new_metrics.strhash_hit - old_metrics.strhash_hit == 19)
assert(new_metrics.strhash_miss - old_metrics.strhash_miss == 1)
subtest:ok(true, "no assertion failed")
end)
==================================================================
[1]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-October/019882.html
--
Best regards,
Sergey Kaplun
More information about the Tarantool-patches
mailing list