diff --git a/technic/depends.txt b/technic/depends.txt index 1b76ab3..a66d81c 100644 --- a/technic/depends.txt +++ b/technic/depends.txt @@ -12,3 +12,4 @@ intllib? unified_inventory? vector_extras? dye? +monitoring? diff --git a/technic/machines/HV/quarry.lua b/technic/machines/HV/quarry.lua index 4f90322..74fec66 100644 --- a/technic/machines/HV/quarry.lua +++ b/technic/machines/HV/quarry.lua @@ -4,6 +4,15 @@ local S = technic.getter local tube_entry = "^pipeworks_tube_connection_metallic.png" local cable_entry = "^technic_cable_connection_overlay.png" +local has_monitoring = minetest.get_modpath("monitoring") +local metric_dig_count + +if has_monitoring then + metric_dig_count = monitoring.counter("technic_quarry_dig_count", + "number of technic quarry digs") + +end + minetest.register_craft({ recipe = { {"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"}, @@ -135,6 +144,9 @@ local function quarry_handle_purge(pos) end local function quarry_run(pos, node) + if metric_dig_count ~= nil then + metric_dig_count.inc() + end local meta = minetest.get_meta(pos) local owner = meta:get_string("owner") diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua index 7d79068..47d4fe8 100644 --- a/technic/machines/switching_station.lua +++ b/technic/machines/switching_station.lua @@ -4,6 +4,20 @@ technic.networks = {} technic.cables = {} technic.redundant_warn = {} +local has_monitoring = minetest.get_modpath("monitoring") +local metric_abm_count +local metric_abm_latency + +if has_monitoring then + metric_abm_count = monitoring.counter("technic_switching_station_abm_count", + "number of technic switch abm calls") + + metric_abm_latency = monitoring.histogram("technic_switching_station_abm_latency", + "latency of the technic switch abm calls", + {0.001, 0.005, 0.01, 0.02, 0.1, 0.5, 1.0}) +end + + local mesecons_path = minetest.get_modpath("mesecons") local digilines_path = minetest.get_modpath("digilines") @@ -242,6 +256,13 @@ minetest.register_abm({ action = function(pos, node, active_object_count, active_object_count_wider) if not technic.powerctrl_state then return end + local timer + if has_monitoring then + metric_abm_count.inc() + timer = metric_abm_latency.timer() + end + + local t0 = minetest.get_us_time() local meta = minetest.get_meta(pos) local meta1 = nil @@ -424,6 +445,8 @@ minetest.register_abm({ minetest.log("warning", "[technic] [+supply] switching station abm took " .. diff .. " us at " .. minetest.pos_to_string(pos)) end + if timer ~= nil then timer.observe() end + return end -- If the PR supply is not enough for the RE demand we will discharge the batteries too @@ -453,6 +476,8 @@ minetest.register_abm({ minetest.log("warning", "[technic] [-supply] switching station abm took " .. diff .. " us at " .. minetest.pos_to_string(pos)) end + if timer ~= nil then timer.observe() end + return end -- If the PR+BA supply is not enough for the RE demand: Power only the batteries @@ -477,6 +502,8 @@ minetest.register_abm({ minetest.log("warning", "[technic] switching station abm took " .. diff .. " us at " .. minetest.pos_to_string(pos)) end + if timer ~= nil then timer.observe() end + end, })