List dataset blocks
This commit is contained in:
parent
8adbfe06ed
commit
adc87149e2
@ -1,6 +1,8 @@
|
|||||||
|
#include "storage/serialization.hpp"
|
||||||
#include "storage/shared_memory.hpp"
|
#include "storage/shared_memory.hpp"
|
||||||
#include "storage/shared_monitor.hpp"
|
#include "storage/shared_monitor.hpp"
|
||||||
#include "storage/storage.hpp"
|
#include "storage/storage.hpp"
|
||||||
|
|
||||||
#include "osrm/exception.hpp"
|
#include "osrm/exception.hpp"
|
||||||
#include "util/log.hpp"
|
#include "util/log.hpp"
|
||||||
#include "util/meminfo.hpp"
|
#include "util/meminfo.hpp"
|
||||||
@ -25,7 +27,7 @@ void deleteRegion(const storage::SharedRegionRegister::ShmKey key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void listRegions()
|
void listRegions(bool show_blocks)
|
||||||
{
|
{
|
||||||
osrm::util::Log() << "name\tshm key\ttimestamp\tsize";
|
osrm::util::Log() << "name\tshm key\ttimestamp\tsize";
|
||||||
if (!storage::SharedMonitor<storage::SharedRegionRegister>::exists())
|
if (!storage::SharedMonitor<storage::SharedRegionRegister>::exists())
|
||||||
@ -43,6 +45,23 @@ void listRegions()
|
|||||||
auto shm = osrm::storage::makeSharedMemory(region.shm_key);
|
auto shm = osrm::storage::makeSharedMemory(region.shm_key);
|
||||||
osrm::util::Log() << name << "\t" << static_cast<int>(region.shm_key) << "\t"
|
osrm::util::Log() << name << "\t" << static_cast<int>(region.shm_key) << "\t"
|
||||||
<< region.timestamp << "\t" << shm->Size();
|
<< region.timestamp << "\t" << shm->Size();
|
||||||
|
|
||||||
|
if (show_blocks)
|
||||||
|
{
|
||||||
|
using namespace storage;
|
||||||
|
auto memory = makeSharedMemory(region.shm_key);
|
||||||
|
io::BufferReader reader(reinterpret_cast<char *>(memory->Ptr()), memory->Size());
|
||||||
|
|
||||||
|
DataLayout layout;
|
||||||
|
serialization::read(reader, layout);
|
||||||
|
|
||||||
|
std::vector<std::string> block_names;
|
||||||
|
layout.List("", std::back_inserter(block_names));
|
||||||
|
for (auto &name : block_names)
|
||||||
|
{
|
||||||
|
osrm::util::Log() << " " << name << " " << layout.GetBlockSize(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +98,7 @@ bool generateDataStoreOptions(const int argc,
|
|||||||
int &max_wait,
|
int &max_wait,
|
||||||
std::string &dataset_name,
|
std::string &dataset_name,
|
||||||
bool &list_datasets,
|
bool &list_datasets,
|
||||||
|
bool &list_blocks,
|
||||||
bool &only_metric)
|
bool &only_metric)
|
||||||
{
|
{
|
||||||
// declare a group of options that will be allowed only on command line
|
// declare a group of options that will be allowed only on command line
|
||||||
@ -109,11 +129,17 @@ bool generateDataStoreOptions(const int argc,
|
|||||||
->default_value(false)
|
->default_value(false)
|
||||||
->implicit_value(true),
|
->implicit_value(true),
|
||||||
"List all OSRM datasets currently in memory") //
|
"List all OSRM datasets currently in memory") //
|
||||||
("only-metric",
|
("list-blocks",
|
||||||
|
boost::program_options::value<bool>(&list_blocks)
|
||||||
|
->default_value(false)
|
||||||
|
->implicit_value(true),
|
||||||
|
"List all OSRM datasets currently in memory")(
|
||||||
|
"only-metric",
|
||||||
boost::program_options::value<bool>(&only_metric)
|
boost::program_options::value<bool>(&only_metric)
|
||||||
->default_value(false)
|
->default_value(false)
|
||||||
->implicit_value(true),
|
->implicit_value(true),
|
||||||
"Only reload the metric data without updating the full dataset. This is an optimization "
|
"Only reload the metric data without updating the full dataset. This is an "
|
||||||
|
"optimization "
|
||||||
"for traffic updates.");
|
"for traffic updates.");
|
||||||
|
|
||||||
// hidden options, will be allowed on command line but will not be shown to the user
|
// hidden options, will be allowed on command line but will not be shown to the user
|
||||||
@ -209,18 +235,26 @@ int main(const int argc, const char *argv[]) try
|
|||||||
int max_wait = -1;
|
int max_wait = -1;
|
||||||
std::string dataset_name;
|
std::string dataset_name;
|
||||||
bool list_datasets = false;
|
bool list_datasets = false;
|
||||||
|
bool list_blocks = false;
|
||||||
bool only_metric = false;
|
bool only_metric = false;
|
||||||
if (!generateDataStoreOptions(
|
if (!generateDataStoreOptions(argc,
|
||||||
argc, argv, verbosity, base_path, max_wait, dataset_name, list_datasets, only_metric))
|
argv,
|
||||||
|
verbosity,
|
||||||
|
base_path,
|
||||||
|
max_wait,
|
||||||
|
dataset_name,
|
||||||
|
list_datasets,
|
||||||
|
list_blocks,
|
||||||
|
only_metric))
|
||||||
{
|
{
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
util::LogPolicy::GetInstance().SetLevel(verbosity);
|
util::LogPolicy::GetInstance().SetLevel(verbosity);
|
||||||
|
|
||||||
if (list_datasets)
|
if (list_datasets || list_blocks)
|
||||||
{
|
{
|
||||||
listRegions();
|
listRegions(list_blocks);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user