test/memory_footpring: Print radix tree node sizes

After switching cells storage onto compact radix tree it
becomes useful to know the tree nodes' sizes.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2021-02-15 18:27:11 +03:00
parent 1bdfa355ea
commit 9baf1226dc
3 changed files with 19 additions and 0 deletions

View File

@@ -97,6 +97,7 @@ class compaction_garbage_collector;
//
//
class row {
friend class size_calculator;
using size_type = std::make_unsigned_t<column_id>;
size_type _size = 0;
using sparse_array_type = compact_radix_tree::tree<cell_and_hash, column_id>;

View File

@@ -40,6 +40,8 @@
#include "test/lib/reader_permit.hh"
class size_calculator {
using cells_type = row::sparse_array_type;
class nest {
public:
static thread_local int level;
@@ -73,6 +75,19 @@ public:
std::cout << prefix() << "sizeof(lru_link_type) = " << sizeof(rows_entry::lru_link_type) << "\n";
std::cout << prefix() << "sizeof(deletable_row) = " << sizeof(deletable_row) << "\n";
std::cout << prefix() << "sizeof(row) = " << sizeof(row) << "\n";
std::cout << prefix() << "radix_tree::inner_node::node_sizes = ";
for (int i = 4; i <= 128; i *= 2) {
std::cout << " " << cells_type::inner_node::node_type::node_size(cells_type::layout::direct_dynamic, i);
}
std::cout << "\n";
std::cout << prefix() << "radix_tree::leaf_node::node_sizes = ";
std::cout << " " << cells_type::leaf_node::node_type::node_size(cells_type::layout::indirect_tiny, 0);
std::cout << " " << cells_type::leaf_node::node_type::node_size(cells_type::layout::indirect_small, 0);
std::cout << " " << cells_type::leaf_node::node_type::node_size(cells_type::layout::indirect_medium, 0);
std::cout << " " << cells_type::leaf_node::node_type::node_size(cells_type::layout::indirect_large, 0);
std::cout << " " << cells_type::leaf_node::node_type::node_size(cells_type::layout::direct_static, 0);
std::cout << "\n";
std::cout << prefix() << "sizeof(atomic_cell_or_collection) = " << sizeof(atomic_cell_or_collection) << "\n";
std::cout << prefix() << "btree::linear_node_size(1) = " << mutation_partition::rows_type::node::linear_node_size(1) << "\n";
std::cout << prefix() << "btree::inner_node_size = " << mutation_partition::rows_type::node::inner_node_size << "\n";

View File

@@ -28,6 +28,8 @@
#include "utils/allocation_strategy.hh"
#include "utils/array-search.hh"
class size_calculator;
namespace compact_radix_tree {
template <typename T, typename Idx> class printer;
@@ -105,6 +107,7 @@ struct variadic_union<Tx, Ty, Ts...> {
template <typename T, typename Index = unsigned int>
requires std::is_nothrow_move_constructible_v<T> && std::is_integral_v<Index>
class tree {
friend class ::size_calculator;
template <typename A, typename I> friend class printer;
class leaf_node;