Skip to content

Commit

Permalink
Merge pull request #2156 from joto/debug-log-cache
Browse files Browse the repository at this point in the history
Dump some stats about memory usage of cache to debug log
  • Loading branch information
lonvia authored Apr 3, 2024
2 parents bdd5583 + 978e525 commit c7578ac
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/middle-pgsql.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1258,6 +1258,8 @@ void middle_pgsql_t::after_nodes()
auto const &table = m_tables.nodes();
analyze_table(m_db_connection, table.schema(), table.name());
}

m_cache->log_stats();
}

void middle_pgsql_t::after_ways()
Expand Down
10 changes: 10 additions & 0 deletions src/middle-ram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,16 @@ void middle_ram_t::relation(osmium::Relation const &relation)
}
}

void middle_ram_t::after_nodes()
{
assert(m_middle_state == middle_state::node);
#ifndef NDEBUG
m_middle_state = middle_state::way;
#endif

m_node_locations.log_stats();
}

osmium::Location middle_ram_t::get_node_location(osmid_t id) const
{
return m_node_locations.get(id);
Expand Down
2 changes: 2 additions & 0 deletions src/middle-ram.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ class middle_ram_t : public middle_t, public middle_query_t
void way(osmium::Way const &way) override;
void relation(osmium::Relation const &) override;

void after_nodes() override;

osmium::Location get_node_location(osmid_t id) const override;

std::size_t nodes_get_list(osmium::WayNodeList *nodes) const override;
Expand Down
13 changes: 13 additions & 0 deletions src/node-locations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

#include "node-locations.hpp"

#include "logging.hpp"

// Workaround: This must be included before buffer_string.hpp due to a missing
// include in the upstream code. https://github.com/mapbox/protozero/pull/104
#include <protozero/config.hpp>
Expand Down Expand Up @@ -79,6 +81,17 @@ osmium::Location node_locations_t::get(osmid_t id) const
return osmium::Location{};
}

void node_locations_t::log_stats()
{
constexpr auto const mbyte = 1024 * 1024;
log_debug("Node locations cache:");
log_debug(" num locations stored: {}", m_count);
log_debug(" bytes overall: {}MB", used_memory() / mbyte);
log_debug(" data capacity: {}MB", m_data.capacity() / mbyte);
log_debug(" data size: {}MB", m_data.size() / mbyte);
log_debug(" index used memory: {}MB", m_index.used_memory() / mbyte);
}

void node_locations_t::clear()
{
m_data.clear();
Expand Down
3 changes: 3 additions & 0 deletions src/node-locations.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ class node_locations_t
return m_data.capacity() + m_index.used_memory();
}

/// Dump information about memory usage to debug log
void log_stats();

/**
* Clear the memory used by this object. The object can be reused after
* that.
Expand Down

0 comments on commit c7578ac

Please sign in to comment.