From ead9c0ee2e6d0c2727f54f3289d18975bb1231ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20L=C3=BCke?= Date: Thu, 26 Dec 2024 18:42:25 +0100 Subject: [PATCH] fixes and refactorings --- .vscode/launch.json | 2 +- include/mesytec-mnode/mnode_math.h | 3 ++- src/CMakeLists.txt | 2 +- src/internal/mana_arena.h | 8 +++++--- src/mana.test.cc | 22 +++++++++++----------- src/mana_plugin_python.cc | 3 +++ src/tools/mana_auto_replay.cc | 13 +++++++------ 7 files changed, 30 insertions(+), 23 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 5e144c2..d18d664 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,7 +11,7 @@ "program": "${workspaceFolder}/build/mana_auto_replay", "args": [ "~/Documents/is690-9Li_3H_run094_241020_124254_part001.zip", - "--plugin=src/libmana-plugin-c-test.so" + "--plugin=src/libmana-plugin-root-histogram.so" ], "stopAtEntry": false, "cwd": "${workspaceFolder}/build", diff --git a/include/mesytec-mnode/mnode_math.h b/include/mesytec-mnode/mnode_math.h index 0119f8e..cff832c 100644 --- a/include/mesytec-mnode/mnode_math.h +++ b/include/mesytec-mnode/mnode_math.h @@ -1,6 +1,7 @@ #ifndef C536E080_25D7_476D_B8E3_25912B9CFC3B #define C536E080_25D7_476D_B8E3_25912B9CFC3B +#include #include #include @@ -21,6 +22,6 @@ inline double make_quiet_nan() return result; } -} +} // namespace mesytec::mnode #endif /* C536E080_25D7_476D_B8E3_25912B9CFC3B */ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f25096a..e26b10d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,7 +17,7 @@ if (MNODE_BUILD_TESTS) function (add_mnode_gtest name) add_executable(test_${name} ${name}.test.cc) target_link_libraries(test_${name} PRIVATE mesytec-mnode GTest::gtest_main spdlog) - add_test(NAME name COMMAND $) + add_test(NAME test_${name} COMMAND $) endfunction() add_mnode_gtest(mana) diff --git a/src/internal/mana_arena.h b/src/internal/mana_arena.h index 0c5ca18..5c99636 100644 --- a/src/internal/mana_arena.h +++ b/src/internal/mana_arena.h @@ -4,9 +4,11 @@ #include #include #include +#include #include #include #include +#include namespace mesytec::mnode::mana { @@ -15,7 +17,7 @@ class Arena { public: static constexpr size_t initial_segment_size = 1u << 20; - static constexpr size_t default_pad = 8; + static constexpr size_t default_align_to = 8; static constexpr size_t default_max_segments = 1; Arena() = default; @@ -25,11 +27,11 @@ class Arena Arena &operator=(Arena &&other) = default; // pushes at least the required amount of memory onto the arena. - // 'required' is rounded up to the nearest multiple of 'default_pad' to make + // 'required' is rounded up to the nearest multiple of 'default_align_to' to make // subsequent allocations aligned. u8 *push_size(size_t required) { - size_t padded = round_up(required, default_pad); + size_t padded = round_up(required, default_align_to); size_t pad_waste = padded - required; required = padded; diff --git a/src/mana.test.cc b/src/mana.test.cc index 8489136..026dacb 100644 --- a/src/mana.test.cc +++ b/src/mana.test.cc @@ -1,8 +1,8 @@ +#include "internal/mana_arena.h" +#include "internal/mana_lib.hpp" #include #include -#include "internal/mana_arena.h" #include -#include "internal/mana_lib.hpp" using namespace mesytec::mnode; @@ -18,35 +18,35 @@ TEST(mnode_mana_arena, push_reset_push) for (size_t i = 0; i < 10; ++i) { - auto mem = arena.push_size(mana::Arena::default_pad + 2); + auto mem = arena.push_size(mana::Arena::default_align_to + 2); ASSERT_NE(mem, nullptr); } ASSERT_EQ(arena.allocations(), 10); ASSERT_GE(arena.pad_waste(), 0); ASSERT_GE(arena.segment_count(), 1); - ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_pad + 2)); - ASSERT_EQ(arena.used(), 10 * (mana::Arena::default_pad + 2)); + ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_align_to + 2)); + ASSERT_EQ(arena.used(), 10 * (mana::Arena::default_align_to + 2)); arena.reset(); ASSERT_EQ(arena.allocations(), 0); ASSERT_EQ(arena.pad_waste(), 0); ASSERT_GE(arena.segment_count(), 1); - ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_pad + 2)); + ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_align_to + 2)); ASSERT_EQ(arena.used(), 0); for (size_t i = 0; i < 10; ++i) { - auto mem = arena.push_size(mana::Arena::default_pad + 2); + auto mem = arena.push_size(mana::Arena::default_align_to + 2); ASSERT_NE(mem, nullptr); } ASSERT_EQ(arena.allocations(), 10); ASSERT_GE(arena.pad_waste(), 0); ASSERT_GE(arena.segment_count(), 1); - ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_pad + 2)); - ASSERT_EQ(arena.used(), 10 * (mana::Arena::default_pad + 2)); + ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_align_to + 2)); + ASSERT_EQ(arena.used(), 10 * (mana::Arena::default_align_to + 2)); } TEST(mnode_mana_offset_ptr, basic) @@ -93,8 +93,8 @@ TEST(mnode_mana_offset_ptr, strings) auto s0 = arena.push_cstr("hello"); auto s1 = arena.push_cstr("world"); - spdlog::info("&t->ptr0={}, &t->ptr1={}", fmt::ptr(&t->ptr0), fmt::ptr(&t->ptr1)); - spdlog::info("s0={} @ {}, s1={} @ {}", s0, fmt::ptr(s0), s1, fmt::ptr(s1)); + // spdlog::info("&t->ptr0={}, &t->ptr1={}", fmt::ptr(&t->ptr0), fmt::ptr(&t->ptr1)); + // spdlog::info("s0={} @ {}, s1={} @ {}", s0, fmt::ptr(s0), s1, fmt::ptr(s1)); set(t->ptr0, s0); set(t->ptr1, s1); diff --git a/src/mana_plugin_python.cc b/src/mana_plugin_python.cc index abef175..7d3ef94 100644 --- a/src/mana_plugin_python.cc +++ b/src/mana_plugin_python.cc @@ -13,6 +13,8 @@ namespace py = pybind11; PYBIND11_EMBEDDED_MODULE(py_mana, m) {} +namespace +{ struct Context { py::scoped_interpreter interp; @@ -23,6 +25,7 @@ struct Context py::object py_end_run; std::vector> eventBuffers; }; +} // namespace MANA_DEFINE_PLUGIN_INIT(init) { diff --git a/src/tools/mana_auto_replay.cc b/src/tools/mana_auto_replay.cc index 02e24ec..686e2b1 100644 --- a/src/tools/mana_auto_replay.cc +++ b/src/tools/mana_auto_replay.cc @@ -295,8 +295,9 @@ struct NngPairStrategy: public ProcessingStrategy auto s = sw.get_elapsed().count() / (1000.0 * 1000.0); auto bytesPerSecond = totalBytesProcessed / s; auto MiBPerSecond = bytesPerSecond / (1u << 20); - std::cout << fmt::format("Processed {} buffers, {} bytes. t={} s, rate={} MiB/s\n", - bufferNumber, totalBytesProcessed, s, MiBPerSecond); + std::cout << fmt::format( + "Processed {} buffers, {} bytes. t={} s, rate={:.2f} MiB/s\n", bufferNumber, + totalBytesProcessed, s, MiBPerSecond); }(sw, bufferNumber, totalBytesProcessed); }; @@ -343,10 +344,10 @@ struct NngPairStrategy: public ProcessingStrategy } report(); - spdlog::info("NngPairStrategy: producerTx: {} MiB, {} messages", - producerTx.bytes / (1024.0 * 1024), producerTx.messages); - spdlog::info("NngPairStrategy: consumerRx: {} MiB, {} messages", - consumerRx.bytes / (1024.0 * 1024), consumerRx.messages); + spdlog::debug("NngPairStrategy: producerTx: {:.2f} MiB, {} messages", + producerTx.bytes / (1024.0 * 1024), producerTx.messages); + spdlog::debug("NngPairStrategy: consumerRx: {:.2f} MiB, {} messages", + consumerRx.bytes / (1024.0 * 1024), consumerRx.messages); } void run(ListfileContext &listfileContext, ParserContext &parserContext) override