mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-25 05:51:08 +02:00
scripted-diff: rename "ann" variables to "latency_score"
-BEGIN VERIFY SCRIPT- sed -i 's/max_global_ann/max_global_latency_score/g' src/node/txorphanage.cpp sed -i 's/max_global_ann/max_global_latency_score/g' src/node/txorphanage.h sed -i 's/max_global_ann/max_global_latency_score/g' src/test/orphanage_tests.cpp sed -i 's/max_global_ann/max_global_latency_score/g' src/test/fuzz/txorphan.cpp sed -i 's/max_global_ann/max_global_latency_score/g' src/bench/txorphanage.cpp sed -i 's/max_ann/max_lat/g' src/node/txorphanage.cpp -END VERIFY SCRIPT-
This commit is contained in:
@@ -68,7 +68,7 @@ static void OrphanageSinglePeerEviction(benchmark::Bench& bench)
|
||||
auto large_tx = MakeTransactionBulkedTo(1, MAX_STANDARD_TX_WEIGHT, det_rand);
|
||||
assert(GetTransactionWeight(*large_tx) <= MAX_STANDARD_TX_WEIGHT);
|
||||
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_ann=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_latency_score=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
|
||||
// Populate the orphanage. To maximize the number of evictions, first fill up with tiny transactions, then add a huge one.
|
||||
NodeId peer{0};
|
||||
@@ -131,7 +131,7 @@ static void OrphanageMultiPeerEviction(benchmark::Bench& bench)
|
||||
indexes.resize(NUM_UNIQUE_TXNS);
|
||||
std::iota(indexes.begin(), indexes.end(), 0);
|
||||
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_ann=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_latency_score=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
// Every peer sends the same transactions, all from shared_txs.
|
||||
// Each peer has 1 or 2 assigned transactions, which they must place as the last and second-to-last positions.
|
||||
// The assignments ensure that every transaction is in some peer's last 2 transactions, and is thus remains in the orphanage until the end of LimitOrphans.
|
||||
@@ -189,7 +189,7 @@ static void OrphanageMultiPeerEviction(benchmark::Bench& bench)
|
||||
static void OrphanageEraseAll(benchmark::Bench& bench, bool block_or_disconnect)
|
||||
{
|
||||
FastRandomContext det_rand{true};
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_ann=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
const auto orphanage{node::MakeTxOrphanage(/*max_global_latency_score=*/node::DEFAULT_MAX_ORPHANAGE_LATENCY_SCORE, /*reserved_peer_usage=*/node::DEFAULT_RESERVED_ORPHAN_WEIGHT_PER_PEER)};
|
||||
// This is an unrealistically large number of inputs for a block, as there is almost no room given to witness data,
|
||||
// outputs, and overhead for individual transactions. The entire block is 1 transaction with 20,000 inputs.
|
||||
constexpr unsigned int NUM_BLOCK_INPUTS{MAX_BLOCK_WEIGHT / APPROX_WEIGHT_PER_INPUT};
|
||||
|
@@ -189,8 +189,8 @@ class TxOrphanageImpl final : public TxOrphanage {
|
||||
|
||||
public:
|
||||
TxOrphanageImpl() = default;
|
||||
TxOrphanageImpl(Count max_global_ann, Usage reserved_peer_usage) :
|
||||
m_max_global_latency_score{max_global_ann},
|
||||
TxOrphanageImpl(Count max_global_latency_score, Usage reserved_peer_usage) :
|
||||
m_max_global_latency_score{max_global_latency_score},
|
||||
m_reserved_usage_per_peer{reserved_peer_usage}
|
||||
{}
|
||||
~TxOrphanageImpl() noexcept override = default;
|
||||
@@ -447,7 +447,7 @@ void TxOrphanageImpl::LimitOrphans()
|
||||
|
||||
// Even though it's possible for MaxPeerLatencyScore to increase within this call to LimitOrphans
|
||||
// (e.g. if a peer's orphans are removed entirely, changing the number of peers), use consistent limits throughout.
|
||||
const auto max_ann{MaxPeerLatencyScore()};
|
||||
const auto max_lat{MaxPeerLatencyScore()};
|
||||
const auto max_mem{ReservedPeerUsage()};
|
||||
|
||||
// We have exceeded the global limit(s). Now, identify who is using too much and evict their orphans.
|
||||
@@ -456,7 +456,7 @@ void TxOrphanageImpl::LimitOrphans()
|
||||
heap_peer_dos.reserve(m_peer_orphanage_info.size());
|
||||
for (const auto& [nodeid, entry] : m_peer_orphanage_info) {
|
||||
// Performance optimization: only consider peers with a DoS score > 1.
|
||||
const auto dos_score = entry.GetDosScore(max_ann, max_mem);
|
||||
const auto dos_score = entry.GetDosScore(max_lat, max_mem);
|
||||
if (dos_score >> FeeFrac{1, 1}) {
|
||||
heap_peer_dos.emplace_back(nodeid, dos_score);
|
||||
}
|
||||
@@ -506,7 +506,7 @@ void TxOrphanageImpl::LimitOrphans()
|
||||
|
||||
// If we erased the last orphan from this peer, it_worst_peer will be invalidated.
|
||||
it_worst_peer = m_peer_orphanage_info.find(worst_peer);
|
||||
if (it_worst_peer == m_peer_orphanage_info.end() || it_worst_peer->second.GetDosScore(max_ann, max_mem) <= dos_threshold) break;
|
||||
if (it_worst_peer == m_peer_orphanage_info.end() || it_worst_peer->second.GetDosScore(max_lat, max_mem) <= dos_threshold) break;
|
||||
}
|
||||
LogDebug(BCLog::TXPACKAGES, "peer=%d orphanage overflow, removed %u of %u announcements\n", worst_peer, num_erased_this_round, starting_num_ann);
|
||||
|
||||
@@ -515,7 +515,7 @@ void TxOrphanageImpl::LimitOrphans()
|
||||
// Unless this peer is empty, put it back in the heap so we continue to consider evicting its orphans.
|
||||
// We may select this peer for evictions again if there are multiple DoSy peers.
|
||||
if (it_worst_peer != m_peer_orphanage_info.end() && it_worst_peer->second.m_count_announcements > 0) {
|
||||
heap_peer_dos.emplace_back(worst_peer, it_worst_peer->second.GetDosScore(max_ann, max_mem));
|
||||
heap_peer_dos.emplace_back(worst_peer, it_worst_peer->second.GetDosScore(max_lat, max_mem));
|
||||
std::push_heap(heap_peer_dos.begin(), heap_peer_dos.end(), compare_score);
|
||||
}
|
||||
} while (true);
|
||||
@@ -774,8 +774,8 @@ std::unique_ptr<TxOrphanage> MakeTxOrphanage() noexcept
|
||||
{
|
||||
return std::make_unique<TxOrphanageImpl>();
|
||||
}
|
||||
std::unique_ptr<TxOrphanage> MakeTxOrphanage(TxOrphanage::Count max_global_ann, TxOrphanage::Usage reserved_peer_usage) noexcept
|
||||
std::unique_ptr<TxOrphanage> MakeTxOrphanage(TxOrphanage::Count max_global_latency_score, TxOrphanage::Usage reserved_peer_usage) noexcept
|
||||
{
|
||||
return std::make_unique<TxOrphanageImpl>(max_global_ann, reserved_peer_usage);
|
||||
return std::make_unique<TxOrphanageImpl>(max_global_latency_score, reserved_peer_usage);
|
||||
}
|
||||
} // namespace node
|
||||
|
@@ -146,6 +146,6 @@ public:
|
||||
|
||||
/** Create a new TxOrphanage instance */
|
||||
std::unique_ptr<TxOrphanage> MakeTxOrphanage() noexcept;
|
||||
std::unique_ptr<TxOrphanage> MakeTxOrphanage(TxOrphanage::Count max_global_ann, TxOrphanage::Usage reserved_peer_usage) noexcept;
|
||||
std::unique_ptr<TxOrphanage> MakeTxOrphanage(TxOrphanage::Count max_global_latency_score, TxOrphanage::Usage reserved_peer_usage) noexcept;
|
||||
} // namespace node
|
||||
#endif // BITCOIN_NODE_TXORPHANAGE_H
|
||||
|
@@ -470,9 +470,9 @@ FUZZ_TARGET(txorphanage_sim)
|
||||
// 3. Initialize real orphanage
|
||||
//
|
||||
|
||||
auto max_global_ann = provider.ConsumeIntegralInRange<node::TxOrphanage::Count>(NUM_PEERS, MAX_ANN);
|
||||
auto max_global_latency_score = provider.ConsumeIntegralInRange<node::TxOrphanage::Count>(NUM_PEERS, MAX_ANN);
|
||||
auto reserved_peer_usage = provider.ConsumeIntegralInRange<node::TxOrphanage::Usage>(1, total_usage);
|
||||
auto real = node::MakeTxOrphanage(max_global_ann, reserved_peer_usage);
|
||||
auto real = node::MakeTxOrphanage(max_global_latency_score, reserved_peer_usage);
|
||||
|
||||
//
|
||||
// 4. Functions and data structures for the simulation.
|
||||
@@ -683,7 +683,7 @@ FUZZ_TARGET(txorphanage_sim)
|
||||
}
|
||||
}
|
||||
// Always trim after each command if needed.
|
||||
const auto max_ann = max_global_ann / std::max<unsigned>(1, count_peers_fn());
|
||||
const auto max_ann = max_global_latency_score / std::max<unsigned>(1, count_peers_fn());
|
||||
const auto max_mem = reserved_peer_usage;
|
||||
while (true) {
|
||||
// Count global usage and number of peers.
|
||||
@@ -813,12 +813,12 @@ FUZZ_TARGET(txorphanage_sim)
|
||||
// CountUniqueOrphans
|
||||
assert(unique_orphans == real->CountUniqueOrphans());
|
||||
// MaxGlobalLatencyScore
|
||||
assert(max_global_ann == real->MaxGlobalLatencyScore());
|
||||
assert(max_global_latency_score == real->MaxGlobalLatencyScore());
|
||||
// ReservedPeerUsage
|
||||
assert(reserved_peer_usage == real->ReservedPeerUsage());
|
||||
// MaxPeerLatencyScore
|
||||
auto present_peers = count_peers_fn();
|
||||
assert(max_global_ann / std::max<unsigned>(1, present_peers) == real->MaxPeerLatencyScore());
|
||||
assert(max_global_latency_score / std::max<unsigned>(1, present_peers) == real->MaxPeerLatencyScore());
|
||||
// MaxGlobalUsage
|
||||
assert(reserved_peer_usage * std::max<unsigned>(1, present_peers) == real->MaxGlobalUsage());
|
||||
// TotalLatencyScore.
|
||||
|
@@ -94,8 +94,8 @@ BOOST_AUTO_TEST_CASE(peer_dos_limits)
|
||||
{
|
||||
// Test announcement limits
|
||||
NodeId peer{8};
|
||||
auto orphanage_low_ann = node::MakeTxOrphanage(/*max_global_ann=*/1, /*reserved_peer_usage=*/TX_SIZE * 10);
|
||||
auto orphanage_low_mem = node::MakeTxOrphanage(/*max_global_ann=*/10, /*reserved_peer_usage=*/TX_SIZE);
|
||||
auto orphanage_low_ann = node::MakeTxOrphanage(/*max_global_latency_score=*/1, /*reserved_peer_usage=*/TX_SIZE * 10);
|
||||
auto orphanage_low_mem = node::MakeTxOrphanage(/*max_global_latency_score=*/10, /*reserved_peer_usage=*/TX_SIZE);
|
||||
|
||||
// Add the first transaction
|
||||
orphanage_low_ann->AddTx(txns.at(0), peer);
|
||||
@@ -119,7 +119,7 @@ BOOST_AUTO_TEST_CASE(peer_dos_limits)
|
||||
{
|
||||
// Test latency score limits
|
||||
NodeId peer{10};
|
||||
auto orphanage_low_ann = node::MakeTxOrphanage(/*max_global_ann=*/5, /*reserved_peer_usage=*/TX_SIZE * 1000);
|
||||
auto orphanage_low_ann = node::MakeTxOrphanage(/*max_global_latency_score=*/5, /*reserved_peer_usage=*/TX_SIZE * 1000);
|
||||
|
||||
// Add the first transaction
|
||||
orphanage_low_ann->AddTx(txns.at(0), peer);
|
||||
@@ -153,7 +153,7 @@ BOOST_AUTO_TEST_CASE(peer_dos_limits)
|
||||
|
||||
// Test announcement limits
|
||||
NodeId peer{9};
|
||||
auto orphanage = node::MakeTxOrphanage(/*max_global_ann=*/3, /*reserved_peer_usage=*/TX_SIZE * 10);
|
||||
auto orphanage = node::MakeTxOrphanage(/*max_global_latency_score=*/3, /*reserved_peer_usage=*/TX_SIZE * 10);
|
||||
|
||||
// First add a tx which will be made reconsiderable.
|
||||
orphanage->AddTx(children.at(0), peer);
|
||||
|
Reference in New Issue
Block a user