Skip to content

Commit 08785aa

Browse files
committed
Merge bitcoin#25499: Use steady clock for all millis bench logging
fa521c9 Use steady clock for all millis bench logging (MacroFake) Pull request description: Currently `GetTimeMillis` is used for bench logging in milliseconds integral precision. Replace it to use a steady clock that is type-safe and steady. Microsecond or float precision can be done in a follow-up. ACKs for top commit: fanquake: ACK fa521c9 - started making the same change. Tree-SHA512: 86a810e496fc663f815acb8771a6c770331593715cde85370226685bc50c13e8e987e3c5efd0b4e48b36ebd2372255357b709204bac750d41e94a9f7d9897fa6
2 parents 1d6c605 + fa521c9 commit 08785aa

File tree

8 files changed

+18
-20
lines changed

8 files changed

+18
-20
lines changed

src/addrdb.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,11 @@ std::optional<bilingual_str> LoadAddrman(const NetGroupManager& netgroupman, con
187187
auto check_addrman = std::clamp<int32_t>(args.GetIntArg("-checkaddrman", DEFAULT_ADDRMAN_CONSISTENCY_CHECKS), 0, 1000000);
188188
addrman = std::make_unique<AddrMan>(netgroupman, /*deterministic=*/false, /*consistency_check_ratio=*/check_addrman);
189189

190-
int64_t nStart = GetTimeMillis();
190+
const auto start{SteadyClock::now()};
191191
const auto path_addr{args.GetDataDirNet() / "peers.dat"};
192192
try {
193193
DeserializeFileDB(path_addr, *addrman, CLIENT_VERSION);
194-
LogPrintf("Loaded %i addresses from peers.dat %dms\n", addrman->size(), GetTimeMillis() - nStart);
194+
LogPrintf("Loaded %i addresses from peers.dat %dms\n", addrman->size(), Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
195195
} catch (const DbNotFoundError&) {
196196
// Addrman can be in an inconsistent state after failure, reset it
197197
addrman = std::make_unique<AddrMan>(netgroupman, /*deterministic=*/false, /*consistency_check_ratio=*/check_addrman);

src/banman.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ void BanMan::LoadBanlist()
3131

3232
if (m_client_interface) m_client_interface->InitMessage(_("Loading banlist…").translated);
3333

34-
int64_t n_start = GetTimeMillis();
34+
const auto start{SteadyClock::now()};
3535
if (m_ban_db.Read(m_banned)) {
3636
SweepBanned(); // sweep out unused entries
3737

3838
LogPrint(BCLog::NET, "Loaded %d banned node addresses/subnets %dms\n", m_banned.size(),
39-
GetTimeMillis() - n_start);
39+
Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
4040
} else {
4141
LogPrintf("Recreating the banlist database\n");
4242
m_banned = {};
@@ -58,13 +58,13 @@ void BanMan::DumpBanlist()
5858
SetBannedSetDirty(false);
5959
}
6060

61-
int64_t n_start = GetTimeMillis();
61+
const auto start{SteadyClock::now()};
6262
if (!m_ban_db.Write(banmap)) {
6363
SetBannedSetDirty(true);
6464
}
6565

6666
LogPrint(BCLog::NET, "Flushed %d banned node addresses/subnets to disk %dms\n", banmap.size(),
67-
GetTimeMillis() - n_start);
67+
Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
6868
}
6969

7070
void BanMan::ClearBanned()

src/init.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1440,7 +1440,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
14401440
};
14411441

14421442
uiInterface.InitMessage(_("Loading block index…").translated);
1443-
const int64_t load_block_index_start_time = GetTimeMillis();
1443+
const auto load_block_index_start_time{SteadyClock::now()};
14441444
auto catch_exceptions = [](auto&& f) {
14451445
try {
14461446
return f();
@@ -1459,7 +1459,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
14591459
std::tie(status, error) = catch_exceptions([&]{ return VerifyLoadedChainstate(chainman, options);});
14601460
if (status == node::ChainstateLoadStatus::SUCCESS) {
14611461
fLoaded = true;
1462-
LogPrintf(" block index %15dms\n", GetTimeMillis() - load_block_index_start_time);
1462+
LogPrintf(" block index %15dms\n", Ticks<std::chrono::milliseconds>(SteadyClock::now() - load_block_index_start_time));
14631463
}
14641464
}
14651465

src/net.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1500,12 +1500,12 @@ void CConnman::ThreadDNSAddressSeed()
15001500

15011501
void CConnman::DumpAddresses()
15021502
{
1503-
int64_t nStart = GetTimeMillis();
1503+
const auto start{SteadyClock::now()};
15041504

15051505
DumpPeerAddresses(::gArgs, addrman);
15061506

15071507
LogPrint(BCLog::NET, "Flushed %d addresses to peers.dat %dms\n",
1508-
addrman.size(), GetTimeMillis() - nStart);
1508+
addrman.size(), Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
15091509
}
15101510

15111511
void CConnman::ProcessAddrFetch()

src/rpc/server.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
#include <mutex>
2222
#include <unordered_map>
2323

24-
using SteadyClock = std::chrono::steady_clock;
25-
2624
static GlobalMutex g_rpc_warmup_mutex;
2725
static std::atomic<bool> g_rpc_running{false};
2826
static bool fRPCInWarmup GUARDED_BY(g_rpc_warmup_mutex) = true;

src/validation.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -4319,7 +4319,7 @@ void Chainstate::LoadExternalBlockFile(
43194319
// Either both should be specified (-reindex), or neither (-loadblock).
43204320
assert(!dbp == !blocks_with_unknown_parent);
43214321

4322-
int64_t nStart = GetTimeMillis();
4322+
const auto start{SteadyClock::now()};
43234323

43244324
int nLoaded = 0;
43254325
try {
@@ -4433,7 +4433,7 @@ void Chainstate::LoadExternalBlockFile(
44334433
} catch (const std::runtime_error& e) {
44344434
AbortNode(std::string("System error: ") + e.what());
44354435
}
4436-
LogPrintf("Loaded %i blocks from external file in %dms\n", nLoaded, GetTimeMillis() - nStart);
4436+
LogPrintf("Loaded %i blocks from external file in %dms\n", nLoaded, Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
44374437
}
44384438

44394439
void Chainstate::CheckBlockIndex()

src/wallet/bdb.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ bool BerkeleyDatabase::Rewrite(const char* pszSkip)
533533

534534
void BerkeleyEnvironment::Flush(bool fShutdown)
535535
{
536-
int64_t nStart = GetTimeMillis();
536+
const auto start{SteadyClock::now()};
537537
// Flush log data to the actual data file on all files that are not in use
538538
LogPrint(BCLog::WALLETDB, "BerkeleyEnvironment::Flush: [%s] Flush(%s)%s\n", strPath, fShutdown ? "true" : "false", fDbEnvInit ? "" : " database not started");
539539
if (!fDbEnvInit)
@@ -561,7 +561,7 @@ void BerkeleyEnvironment::Flush(bool fShutdown)
561561
no_dbs_accessed = false;
562562
}
563563
}
564-
LogPrint(BCLog::WALLETDB, "BerkeleyEnvironment::Flush: Flush(%s)%s took %15dms\n", fShutdown ? "true" : "false", fDbEnvInit ? "" : " database not started", GetTimeMillis() - nStart);
564+
LogPrint(BCLog::WALLETDB, "BerkeleyEnvironment::Flush: Flush(%s)%s took %15dms\n", fShutdown ? "true" : "false", fDbEnvInit ? "" : " database not started", Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
565565
if (fShutdown) {
566566
char** listp;
567567
if (no_dbs_accessed) {
@@ -591,14 +591,14 @@ bool BerkeleyDatabase::PeriodicFlush()
591591

592592
const std::string strFile = fs::PathToString(m_filename);
593593
LogPrint(BCLog::WALLETDB, "Flushing %s\n", strFile);
594-
int64_t nStart = GetTimeMillis();
594+
const auto start{SteadyClock::now()};
595595

596596
// Flush wallet file so it's self contained
597597
env->CloseDb(m_filename);
598598
env->CheckpointLSN(strFile);
599599
m_refcount = -1;
600600

601-
LogPrint(BCLog::WALLETDB, "Flushed %s %dms\n", strFile, GetTimeMillis() - nStart);
601+
LogPrint(BCLog::WALLETDB, "Flushed %s %dms\n", strFile, Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
602602

603603
return true;
604604
}

src/wallet/wallet.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2786,7 +2786,7 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
27862786
ArgsManager& args = *Assert(context.args);
27872787
const std::string& walletFile = database->Filename();
27882788

2789-
int64_t nStart = GetTimeMillis();
2789+
const auto start{SteadyClock::now()};
27902790
// TODO: Can't use std::make_shared because we need a custom deleter but
27912791
// should be possible to use std::allocate_shared.
27922792
const std::shared_ptr<CWallet> walletInstance(new CWallet(chain, name, args, std::move(database)), ReleaseWallet);
@@ -3007,7 +3007,7 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
30073007
walletInstance->m_spend_zero_conf_change = args.GetBoolArg("-spendzeroconfchange", DEFAULT_SPEND_ZEROCONF_CHANGE);
30083008
walletInstance->m_signal_rbf = args.GetBoolArg("-walletrbf", DEFAULT_WALLET_RBF);
30093009

3010-
walletInstance->WalletLogPrintf("Wallet completed loading in %15dms\n", GetTimeMillis() - nStart);
3010+
walletInstance->WalletLogPrintf("Wallet completed loading in %15dms\n", Ticks<std::chrono::milliseconds>(SteadyClock::now() - start));
30113011

30123012
// Try to top up keypool. No-op if the wallet is locked.
30133013
walletInstance->TopUpKeyPool();

0 commit comments

Comments
 (0)