Parallel ledger loader & I/O performance improvements:

- Only duplicate records from archive to writable during online_delete.
- Log duration of nodestore reads.
- Include nodestore counters in perf_log output.
- Remove gratuitous nodestore activity counting.
- Report initial sync duration in server_info and perfLog.
- Report state_accounting in perfLog.
- Make state_accounting durations more accurate.
- Parallel ledger loader.
- Config parameter to load ledgers on start.
This commit is contained in:
Mark Travis
2021-12-14 17:08:59 -08:00
committed by Nik Bougalis
parent 5a4654a0da
commit 7c12f01358
28 changed files with 245 additions and 89 deletions

View File

@@ -279,6 +279,7 @@ public:
perf::setup_PerfLog(
config_->section("perf"),
config_->CONFIG_DIR),
*this,
logs_->journal("PerfLog"),
[this] { signalStop(); }))
@@ -1312,6 +1313,7 @@ ApplicationImp::setup()
Pathfinder::initPathTable();
auto const startUp = config_->START_UP;
JLOG(m_journal.debug()) << "startUp: " << startUp;
if (!config_->reporting())
{
if (startUp == Config::FRESH)
@@ -1333,7 +1335,18 @@ ApplicationImp::setup()
{
JLOG(m_journal.error())
<< "The specified ledger could not be loaded.";
return false;
if (config_->FAST_LOAD)
{
// Fall back to syncing from the network, such as
// when there's no existing data.
if (startUp == Config::NETWORK && !config_->standalone())
m_networkOPs->setNeedNetworkLedger();
startGenesisLedger();
}
else
{
return false;
}
}
}
else if (startUp == Config::NETWORK)
@@ -2007,7 +2020,7 @@ ApplicationImp::loadOldLedger(
return false;
}
if (!loadLedger->walkLedger(journal("Ledger")))
if (!loadLedger->walkLedger(journal("Ledger"), true))
{
JLOG(m_journal.fatal()) << "Ledger is missing nodes.";
assert(false);