Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simulate leader blocks wip #2325

Draft
wants to merge 4,697 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4697 commits
Select commit Hold shift + click to select a range
6221488
save
ryoqun Dec 1, 2024
b3cedc8
save
ryoqun Dec 1, 2024
7aed534
save
ryoqun Dec 1, 2024
b3ced16
save
ryoqun Dec 1, 2024
b3d103e
save
ryoqun Dec 1, 2024
f334843
save
ryoqun Dec 1, 2024
2720a6e
save
ryoqun Dec 1, 2024
f44103d
save
ryoqun Dec 1, 2024
a8e573f
save
ryoqun Dec 1, 2024
730942c
save
ryoqun Dec 2, 2024
b51a3d9
save
ryoqun Dec 2, 2024
16425e3
save
ryoqun Dec 2, 2024
f2e71a8
save
ryoqun Dec 2, 2024
274499f
save
ryoqun Dec 2, 2024
3d80d0d
save
ryoqun Dec 2, 2024
88495ab
save
ryoqun Dec 2, 2024
c4d0d42
save
ryoqun Dec 2, 2024
bacebb2
save
ryoqun Dec 2, 2024
bdce2db
save
ryoqun Dec 2, 2024
f746660
save
ryoqun Dec 2, 2024
49144e2
save
ryoqun Dec 2, 2024
f4c2f3c
save
ryoqun Dec 2, 2024
a56980c
save
ryoqun Dec 2, 2024
19eaf5e
save
ryoqun Dec 2, 2024
d4a5ccb
save
ryoqun Dec 2, 2024
7bde2a5
save
ryoqun Dec 2, 2024
e042487
save
ryoqun Dec 2, 2024
ec70f9e
save
ryoqun Dec 2, 2024
5b4fb92
save
ryoqun Dec 2, 2024
7f0cc2a
save
ryoqun Dec 2, 2024
a1e97e2
save
ryoqun Dec 2, 2024
902bc04
save
ryoqun Dec 2, 2024
6476974
save
ryoqun Dec 2, 2024
b024179
save
ryoqun Dec 2, 2024
2d02b64
save
ryoqun Dec 2, 2024
19614da
save
ryoqun Dec 2, 2024
bd8acaa
save
ryoqun Dec 2, 2024
9c413df
save
ryoqun Dec 2, 2024
410c323
save
ryoqun Dec 2, 2024
1171bb2
save
ryoqun Dec 2, 2024
272eb33
save
ryoqun Dec 2, 2024
a31bcf8
save
ryoqun Dec 2, 2024
015c67b
save
ryoqun Dec 2, 2024
ec8c472
save
ryoqun Dec 2, 2024
b5289b3
save
ryoqun Dec 2, 2024
701c87f
save
ryoqun Dec 2, 2024
1b966e6
save
ryoqun Dec 2, 2024
22a9cdb
save
ryoqun Dec 2, 2024
6a048c2
save
ryoqun Dec 2, 2024
c5818e6
save
ryoqun Dec 2, 2024
50c9857
save
ryoqun Dec 2, 2024
2aaab31
save
ryoqun Dec 2, 2024
2e96faa
save
ryoqun Dec 2, 2024
e3a577a
save
ryoqun Dec 2, 2024
fc73fbe
save
ryoqun Dec 2, 2024
56b64c6
save
ryoqun Dec 2, 2024
505b7ee
save
ryoqun Dec 2, 2024
b9cd138
save
ryoqun Dec 2, 2024
3474f9d
save
ryoqun Dec 2, 2024
997f4f7
save
ryoqun Dec 2, 2024
bd46859
save
ryoqun Dec 2, 2024
30ce5b0
save
ryoqun Dec 2, 2024
17867bf
save
ryoqun Dec 2, 2024
d4ee667
save
ryoqun Dec 2, 2024
fde86b6
save
ryoqun Dec 2, 2024
aa82ba5
save
ryoqun Dec 2, 2024
9321e0b
save
ryoqun Dec 2, 2024
859be31
save
ryoqun Dec 2, 2024
4a30bcb
save
ryoqun Dec 2, 2024
6a9d45f
save
ryoqun Dec 2, 2024
ba1db3e
save
ryoqun Dec 2, 2024
0e93dee
save
ryoqun Dec 2, 2024
e5f9f47
save
ryoqun Dec 2, 2024
268a099
save
ryoqun Dec 2, 2024
d4162b1
save
ryoqun Dec 2, 2024
46ceefe
save
ryoqun Dec 2, 2024
8766837
save
ryoqun Dec 2, 2024
f72b1a8
save
ryoqun Dec 2, 2024
867fe66
save
ryoqun Dec 2, 2024
4e012e3
save
ryoqun Dec 2, 2024
d17478d
save
ryoqun Dec 2, 2024
381e8b1
save
ryoqun Dec 2, 2024
9521d05
save
ryoqun Dec 2, 2024
cd0d3fd
save
ryoqun Dec 2, 2024
be9f676
save
ryoqun Dec 2, 2024
eadb3eb
save
ryoqun Dec 2, 2024
64fd28f
save
ryoqun Dec 2, 2024
ed0ac86
save
ryoqun Dec 2, 2024
6b6c507
save
ryoqun Dec 2, 2024
a5300ba
save
ryoqun Dec 2, 2024
00c93a0
save
ryoqun Dec 2, 2024
d12a449
save
ryoqun Dec 2, 2024
913aa0e
save
ryoqun Dec 2, 2024
bd96c6c
save
ryoqun Dec 2, 2024
74a9210
save
ryoqun Dec 2, 2024
f6943a9
save
ryoqun Dec 2, 2024
55ea145
save
ryoqun Dec 2, 2024
7c6951c
save
ryoqun Dec 2, 2024
17bc8a3
save
ryoqun Dec 2, 2024
4fca1fe
save
ryoqun Dec 2, 2024
51de6c2
save
ryoqun Dec 2, 2024
4302139
save
ryoqun Dec 2, 2024
53c6d47
save
ryoqun Dec 2, 2024
367b9e6
save
ryoqun Dec 2, 2024
a5e1125
save
ryoqun Dec 2, 2024
f7b6489
save
ryoqun Dec 2, 2024
e23e8f9
save
ryoqun Dec 2, 2024
96a0c1d
save
ryoqun Dec 2, 2024
73f4810
save
ryoqun Dec 2, 2024
19ea97a
save
ryoqun Dec 2, 2024
b080770
save
ryoqun Dec 2, 2024
894e2a1
save
ryoqun Dec 2, 2024
888680e
save
ryoqun Dec 2, 2024
c8ae520
save
ryoqun Dec 2, 2024
3d7fae2
save
ryoqun Dec 2, 2024
cd0e3d8
save
ryoqun Dec 2, 2024
79cacc8
save
ryoqun Dec 2, 2024
ceea5db
save
ryoqun Dec 2, 2024
c908fda
Merge remote-tracking branch 'origin-anza/master' into HEAD
ryoqun Dec 3, 2024
86b8b66
save
ryoqun Dec 3, 2024
e50a02a
save
ryoqun Dec 3, 2024
e4cb5c7
save
ryoqun Dec 3, 2024
fedba09
save
ryoqun Dec 3, 2024
00916fc
save
ryoqun Dec 3, 2024
1cc45b4
save
ryoqun Dec 3, 2024
61edacd
save
ryoqun Dec 3, 2024
fa69015
save
ryoqun Dec 3, 2024
af5a37b
save
ryoqun Dec 3, 2024
5b02400
save
ryoqun Dec 3, 2024
bca19b0
save
ryoqun Dec 3, 2024
129bfd9
clean up
ryoqun Dec 3, 2024
770f86c
clean up
ryoqun Dec 3, 2024
2779131
clean up
ryoqun Dec 3, 2024
01be662
clean up
ryoqun Dec 3, 2024
045a900
clean up
ryoqun Dec 3, 2024
fef7af3
clean up
ryoqun Dec 3, 2024
ded483c
clean up
ryoqun Dec 3, 2024
c1ea77d
save
ryoqun Dec 3, 2024
cf828c1
save
ryoqun Dec 3, 2024
40b6bb2
save
ryoqun Dec 3, 2024
d346386
save
ryoqun Dec 3, 2024
10f502f
save
ryoqun Dec 3, 2024
4bc6bc3
save
ryoqun Dec 3, 2024
6f89960
save
ryoqun Dec 3, 2024
315f29c
save
ryoqun Dec 3, 2024
291fee1
save
ryoqun Dec 3, 2024
eba290e
save
ryoqun Dec 3, 2024
12ee96c
save
ryoqun Dec 3, 2024
a7f4eea
save
ryoqun Dec 3, 2024
745f6be
save
ryoqun Dec 3, 2024
4426cc9
save
ryoqun Dec 3, 2024
93e296b
save
ryoqun Dec 3, 2024
01d8f20
save
ryoqun Dec 3, 2024
ce68518
save
ryoqun Dec 3, 2024
13f3d90
save
ryoqun Dec 3, 2024
8e73b15
save
ryoqun Dec 3, 2024
4cc594a
save
ryoqun Dec 3, 2024
d1e4883
save
ryoqun Dec 3, 2024
00e03c6
save
ryoqun Dec 3, 2024
a36af2a
save
ryoqun Dec 3, 2024
1dd68a3
save
ryoqun Dec 3, 2024
3c78fa1
save
ryoqun Dec 3, 2024
be188d1
save
ryoqun Dec 3, 2024
56e6bf2
save
ryoqun Dec 3, 2024
646a17e
save
ryoqun Dec 3, 2024
f74d6bd
save
ryoqun Dec 3, 2024
2a7b26e
save
ryoqun Dec 3, 2024
a31c754
save
ryoqun Dec 3, 2024
440b1a6
save
ryoqun Dec 3, 2024
715ab3a
save
ryoqun Dec 3, 2024
6defc28
save
ryoqun Dec 3, 2024
83f064b
save
ryoqun Dec 3, 2024
3c8cfc1
save
ryoqun Dec 3, 2024
94ab9d3
save
ryoqun Dec 3, 2024
499c57c
save
ryoqun Dec 3, 2024
8dd6ea8
save
ryoqun Dec 3, 2024
e99f908
save
ryoqun Dec 3, 2024
89d1d7d
save
ryoqun Dec 3, 2024
f75f49b
save
ryoqun Dec 3, 2024
e0028d3
save
ryoqun Dec 3, 2024
20c5ccb
save
ryoqun Dec 3, 2024
2465734
save
ryoqun Dec 3, 2024
23b5521
save
ryoqun Dec 3, 2024
9ad9c2b
save
ryoqun Dec 3, 2024
54c5ff0
save
ryoqun Dec 3, 2024
c3b5791
save
ryoqun Dec 3, 2024
884b124
save
ryoqun Dec 3, 2024
3885021
save
ryoqun Dec 3, 2024
864d25f
save
ryoqun Dec 3, 2024
6febdf4
save
ryoqun Dec 3, 2024
7257b58
save
ryoqun Dec 3, 2024
0c05d3c
save
ryoqun Dec 3, 2024
e7e037d
save
ryoqun Dec 3, 2024
6d19bd6
save
ryoqun Dec 3, 2024
b5f9014
save
ryoqun Dec 3, 2024
b7b67cb
save
ryoqun Dec 3, 2024
a4570a0
save
ryoqun Dec 3, 2024
5d0613f
save
ryoqun Dec 3, 2024
30cc3f8
save
ryoqun Dec 3, 2024
4fa499b
Revert "save"
ryoqun Dec 4, 2024
8c1d2ab
save
ryoqun Dec 4, 2024
a3a0670
Merge remote-tracking branch 'origin-anza/master' into final-unified-…
ryoqun Dec 4, 2024
4d36266
save
ryoqun Dec 4, 2024
4b86a21
save
ryoqun Dec 4, 2024
29fd615
save
ryoqun Dec 4, 2024
31ee948
save
ryoqun Dec 4, 2024
bd87efe
save
ryoqun Dec 4, 2024
f7dd0aa
save
ryoqun Dec 4, 2024
069f7be
save
ryoqun Dec 4, 2024
a3a2e9e
save
ryoqun Dec 4, 2024
5d755be
save
ryoqun Dec 4, 2024
f28d76b
save
ryoqun Dec 4, 2024
f37ce37
save
ryoqun Dec 4, 2024
7d7b87d
save
ryoqun Dec 4, 2024
7aca95f
save
ryoqun Dec 4, 2024
949c8a1
save
ryoqun Dec 4, 2024
c7c960a
save
ryoqun Dec 4, 2024
3b54d8e
save
ryoqun Dec 4, 2024
868a087
save
ryoqun Dec 4, 2024
d85fa7b
save
ryoqun Dec 4, 2024
7b84bc1
save
ryoqun Dec 4, 2024
c2e4dfc
save
ryoqun Dec 4, 2024
e734168
save
ryoqun Dec 4, 2024
cb34036
save
ryoqun Dec 4, 2024
b5953a7
save
ryoqun Dec 4, 2024
fb14b45
save
ryoqun Dec 4, 2024
2df78f0
save
ryoqun Dec 4, 2024
f94b870
save
ryoqun Dec 4, 2024
99b635b
save
ryoqun Dec 4, 2024
eb8fb39
save
ryoqun Dec 4, 2024
6ea7af9
save
ryoqun Dec 4, 2024
d0c39ab
save
ryoqun Dec 4, 2024
904d4eb
save
ryoqun Dec 4, 2024
77fe1ee
save
ryoqun Dec 4, 2024
f46b859
save
ryoqun Dec 4, 2024
e7f2019
save
ryoqun Dec 4, 2024
2d26c97
save
ryoqun Dec 4, 2024
fa829ea
save
ryoqun Dec 4, 2024
f9fae74
save
ryoqun Dec 4, 2024
7103bd0
save
ryoqun Dec 4, 2024
7bbf13d
save
ryoqun Dec 4, 2024
9e03497
save
ryoqun Dec 4, 2024
5bfa1b1
save
ryoqun Dec 4, 2024
a6d70f7
save
ryoqun Dec 4, 2024
1205c73
save
ryoqun Dec 4, 2024
bc18976
save
ryoqun Dec 4, 2024
1fa1d6b
save
ryoqun Dec 4, 2024
9f1680c
save
ryoqun Dec 4, 2024
1d56f7b
Merge commit '7b597fb869df091d61506b7c43fd6d3e40b21797' into final-un…
ryoqun Dec 6, 2024
57b6081
Merge commit '744db010d242ff0eef1caf61318d7adcd824cefd' into final-un…
ryoqun Dec 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
278 changes: 231 additions & 47 deletions Cargo.lock

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,7 @@ curve25519-dalek = { version = "4.1.3", features = ["digest", "rand_core"] }
dashmap = "5.5.3"
derivation-path = { version = "0.2.0", default-features = false }
derive-where = "1.2.7"
derive_more = { version = "1.0.0", features = ["full"] }
dialoguer = "0.10.4"
digest = "0.10.7"
dir-diff = "0.3.3"
Expand Down Expand Up @@ -331,9 +332,6 @@ index_list = "0.2.14"
indexmap = "2.7.0"
indicatif = "0.17.9"
itertools = "0.12.1"
jemallocator = { package = "tikv-jemallocator", version = "0.4.1", features = [
"unprefixed_malloc_on_supported_platforms",
] }
js-sys = "0.3.74"
json5 = "0.4.1"
jsonrpc-core = "18.0.0"
Expand All @@ -357,9 +355,11 @@ lz4 = "1.28.0"
memmap2 = "0.5.10"
memoffset = "0.9"
merlin = "3"
mimalloc = "0.1.43"
min-max-heap = "1.3.0"
mockall = "0.11.4"
modular-bitfield = "0.11.2"
more-asserts = "0.3.1"
nix = "0.29.0"
num-bigint = "0.4.6"
num-derive = "0.4"
Expand Down
5 changes: 4 additions & 1 deletion banking-bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ license = { workspace = true }
edition = { workspace = true }

[dependencies]
assert_matches = { workspace = true }
clap = { version = "3.1.8", features = ["derive", "cargo"] }
crossbeam-channel = { workspace = true }
log = { workspace = true }
mimalloc = { workspace = true }
rand = { workspace = true }
rayon = { workspace = true }
solana-client = { workspace = true }
solana-core = { workspace = true }
solana-core = { workspace = true, features = ["dev-context-only-utils"] }
solana-gossip = { workspace = true }
solana-ledger = { workspace = true }
solana-logger = { workspace = true }
Expand All @@ -26,6 +28,7 @@ solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
solana-sdk = { workspace = true }
solana-streamer = { workspace = true }
solana-tpu-client = { workspace = true }
solana-unified-scheduler-pool = { workspace = true }
solana-version = { workspace = true }

[features]
Expand Down
92 changes: 69 additions & 23 deletions banking-bench/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
#![allow(clippy::arithmetic_side_effects)]
use {
assert_matches::assert_matches,
clap::{crate_description, crate_name, Arg, ArgEnum, Command},
crossbeam_channel::{unbounded, Receiver},
log::*,
rand::{thread_rng, Rng},
rayon::prelude::*,
solana_client::connection_cache::ConnectionCache,
solana_core::{
banking_stage::BankingStage,
banking_trace::{BankingPacketBatch, BankingTracer, BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT},
banking_stage::{update_bank_forks_and_poh_recorder_for_new_tpu_bank, BankingStage},
banking_trace::{
BankingPacketBatch, BankingTracer, Channels, BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT,
},
validator::BlockProductionMethod,
},
solana_gossip::cluster_info::{ClusterInfo, Node},
Expand All @@ -29,20 +32,25 @@ use {
hash::Hash,
message::Message,
pubkey::{self, Pubkey},
scheduling::SchedulingMode,
signature::{Keypair, Signature, Signer},
system_instruction, system_transaction,
timing::timestamp,
transaction::Transaction,
},
solana_streamer::socket::SocketAddrSpace,
solana_tpu_client::tpu_client::DEFAULT_TPU_CONNECTION_POOL_SIZE,
solana_unified_scheduler_pool::{DefaultSchedulerPool, SupportedSchedulingMode},
std::{
sync::{atomic::Ordering, Arc, RwLock},
thread::sleep,
time::{Duration, Instant},
},
};

#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;

// transfer transaction cost = 1 * SIGNATURE_COST +
// 2 * WRITE_LOCK_UNITS +
// 1 * system_program
Expand Down Expand Up @@ -347,7 +355,7 @@ fn main() {
let (replay_vote_sender, _replay_vote_receiver) = unbounded();
let bank0 = Bank::new_for_benches(&genesis_config);
let bank_forks = BankForks::new_rw_arc(bank0);
let mut bank = bank_forks.read().unwrap().working_bank();
let mut bank = bank_forks.read().unwrap().working_bank_with_scheduler();

// set cost tracker limits to MAX so it will not filter out TXs
bank.write_cost_tracker()
Expand Down Expand Up @@ -440,9 +448,36 @@ fn main() {
BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT,
)))
.unwrap();
let (non_vote_sender, non_vote_receiver) = banking_tracer.create_channel_non_vote();
let (tpu_vote_sender, tpu_vote_receiver) = banking_tracer.create_channel_tpu_vote();
let (gossip_vote_sender, gossip_vote_receiver) = banking_tracer.create_channel_gossip_vote();
let prioritization_fee_cache = Arc::new(PrioritizationFeeCache::new(0u64));
let scheduler_pool = if matches!(
block_production_method,
BlockProductionMethod::UnifiedScheduler
) {
let pool = DefaultSchedulerPool::new(
SupportedSchedulingMode::Either(SchedulingMode::BlockProduction),
None,
None,
None,
Some(replay_vote_sender.clone()),
prioritization_fee_cache.clone(),
poh_recorder.read().unwrap().new_recorder(),
);
bank_forks
.write()
.unwrap()
.install_scheduler_pool(pool.clone());
Some(pool)
} else {
None
};
let Channels {
non_vote_sender,
non_vote_receiver,
tpu_vote_sender,
tpu_vote_receiver,
gossip_vote_sender,
gossip_vote_receiver,
} = banking_tracer.create_channels(scheduler_pool.as_ref());
let cluster_info = {
let keypair = Arc::new(Keypair::new());
let node = Node::new_localhost_with_pubkey(&keypair.pubkey());
Expand All @@ -461,7 +496,7 @@ fn main() {
),
};
let banking_stage = BankingStage::new_num_threads(
block_production_method,
block_production_method.clone(),
&cluster_info,
&poh_recorder,
non_vote_receiver,
Expand All @@ -473,10 +508,23 @@ fn main() {
None,
Arc::new(connection_cache),
bank_forks.clone(),
&Arc::new(PrioritizationFeeCache::new(0u64)),
&prioritization_fee_cache,
false,
scheduler_pool,
);

// This bench processes transactions, starting from the very first bank, so special-casing is
// needed for unified scheduler.
if matches!(
block_production_method,
BlockProductionMethod::UnifiedScheduler
) {
bank = bank_forks
.write()
.unwrap()
.reinstall_block_production_scheduler_into_working_genesis_bank();
}

// This is so that the signal_receiver does not go out of scope after the closure.
// If it is dropped before poh_service, then poh_service will error when
// calling send() on the channel.
Expand Down Expand Up @@ -537,33 +585,31 @@ fn main() {
tx_total_us += now.elapsed().as_micros() as u64;

let mut poh_time = Measure::start("poh_time");
poh_recorder
let cleared_bank = poh_recorder
.write()
.unwrap()
.reset(bank.clone(), Some((bank.slot(), bank.slot() + 1)));
assert_matches!(cleared_bank, None);
poh_time.stop();

let mut new_bank_time = Measure::start("new_bank");
if let Some((result, _timings)) = bank.wait_for_completed_scheduler() {
assert_matches!(result, Ok(_));
}
let new_slot = bank.slot() + 1;
let new_bank = Bank::new_from_parent(bank, &collector, new_slot);
let new_bank = Bank::new_from_parent(bank.clone(), &collector, new_slot);
new_bank_time.stop();

let mut insert_time = Measure::start("insert_time");
bank_forks.write().unwrap().insert(new_bank);
bank = bank_forks.read().unwrap().working_bank();
update_bank_forks_and_poh_recorder_for_new_tpu_bank(
&bank_forks,
&poh_recorder,
new_bank,
false,
);
bank = bank_forks.read().unwrap().working_bank_with_scheduler();
insert_time.stop();

// set cost tracker limits to MAX so it will not filter out TXs
bank.write_cost_tracker()
.unwrap()
.set_limits(u64::MAX, u64::MAX, u64::MAX);

assert!(poh_recorder.read().unwrap().bank().is_none());
poh_recorder
.write()
.unwrap()
.set_bank_for_test(bank.clone());
assert!(poh_recorder.read().unwrap().bank().is_some());
debug!(
"new_bank_time: {}us insert_time: {}us poh_time: {}us",
new_bank_time.as_us(),
Expand Down
1 change: 1 addition & 0 deletions bench-tps/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ clap = { workspace = true }
crossbeam-channel = { workspace = true }
csv = { workspace = true }
log = { workspace = true }
mimalloc = { workspace = true }
rand = { workspace = true }
rayon = { workspace = true }
serde = { workspace = true }
Expand Down
3 changes: 3 additions & 0 deletions bench-tps/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ use {
},
};

#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;

/// Number of signatures for all transactions in ~1 week at ~100K TPS
pub const NUM_SIGNATURES_FOR_TXS: u64 = 100_000 * 60 * 60 * 24 * 7;

Expand Down
2 changes: 1 addition & 1 deletion ci/test-checks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ _ scripts/check-dev-context-only-utils.sh tree

_ scripts/cargo-for-all-lock-files.sh -- "+${rust_nightly}" fmt --all -- --check

_ ci/do-audit.sh
# _ ci/do-audit.sh

if [[ -n $CI ]] && [[ $CHANNEL = "stable" ]]; then
_ ci/check-install-all.sh
Expand Down
2 changes: 2 additions & 0 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ bytes = { workspace = true }
chrono = { workspace = true, features = ["default", "serde"] }
crossbeam-channel = { workspace = true }
dashmap = { workspace = true, features = ["rayon", "raw-api"] }
derive_more = { workspace = true }
etcd-client = { workspace = true, features = ["tls"] }
futures = { workspace = true }
histogram = { workspace = true }
Expand Down Expand Up @@ -87,6 +88,7 @@ solana-tls-utils = { workspace = true }
solana-tpu-client = { workspace = true }
solana-transaction-status = { workspace = true }
solana-turbine = { workspace = true }
solana-unified-scheduler-logic = { workspace = true }
solana-unified-scheduler-pool = { workspace = true }
solana-version = { workspace = true }
solana-vote = { workspace = true }
Expand Down
14 changes: 10 additions & 4 deletions core/benches/banking_stage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#![feature(test)]

use {
solana_core::validator::BlockProductionMethod,
solana_core::{banking_trace::Channels, validator::BlockProductionMethod},
solana_vote_program::{vote_state::TowerSync, vote_transaction::new_tower_sync_transaction},
};

Expand Down Expand Up @@ -211,9 +211,14 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
genesis_config.ticks_per_slot = 10_000;

let banking_tracer = BankingTracer::new_disabled();
let (non_vote_sender, non_vote_receiver) = banking_tracer.create_channel_non_vote();
let (tpu_vote_sender, tpu_vote_receiver) = banking_tracer.create_channel_tpu_vote();
let (gossip_vote_sender, gossip_vote_receiver) = banking_tracer.create_channel_gossip_vote();
let Channels {
non_vote_sender,
non_vote_receiver,
tpu_vote_sender,
tpu_vote_receiver,
gossip_vote_sender,
gossip_vote_receiver,
} = banking_tracer.create_channels(None);

let mut bank = Bank::new_for_benches(&genesis_config);
// Allow arbitrary transaction processing time for the purposes of this bench
Expand Down Expand Up @@ -304,6 +309,7 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
bank_forks,
&Arc::new(PrioritizationFeeCache::new(0u64)),
false,
None,
);

let chunk_len = verified.len() / CHUNKS;
Expand Down
26 changes: 21 additions & 5 deletions core/benches/banking_trace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use {
for_test::{
drop_and_clean_temp_dir_unless_suppressed, sample_packet_batch, terminate_tracer,
},
receiving_loop_with_minimized_sender_overhead, BankingPacketBatch, BankingTracer,
receiving_loop_with_minimized_sender_overhead, BankingPacketBatch, BankingTracer, Channels,
TraceError, TracerThreadResult, BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT,
},
std::{
Expand Down Expand Up @@ -35,7 +35,11 @@ fn black_box_packet_batch(packet_batch: BankingPacketBatch) -> TracerThreadResul
fn bench_banking_tracer_main_thread_overhead_noop_baseline(bencher: &mut Bencher) {
let exit = Arc::<AtomicBool>::default();
let tracer = BankingTracer::new_disabled();
let (non_vote_sender, non_vote_receiver) = tracer.create_channel_non_vote();
let Channels {
non_vote_sender,
non_vote_receiver,
..
} = tracer.create_channels(None);

let exit_for_dummy_thread = exit.clone();
let dummy_main_thread = thread::spawn(move || {
Expand Down Expand Up @@ -64,7 +68,11 @@ fn bench_banking_tracer_main_thread_overhead_under_peak_write(bencher: &mut Benc
BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT,
)))
.unwrap();
let (non_vote_sender, non_vote_receiver) = tracer.create_channel_non_vote();
let Channels {
non_vote_sender,
non_vote_receiver,
..
} = tracer.create_channels(None);

let exit_for_dummy_thread = exit.clone();
let dummy_main_thread = thread::spawn(move || {
Expand Down Expand Up @@ -101,7 +109,11 @@ fn bench_banking_tracer_main_thread_overhead_under_sustained_write(bencher: &mut
1024 * 1024, // cause more frequent trace file rotation
)))
.unwrap();
let (non_vote_sender, non_vote_receiver) = tracer.create_channel_non_vote();
let Channels {
non_vote_sender,
non_vote_receiver,
..
} = tracer.create_channels(None);

let exit_for_dummy_thread = exit.clone();
let dummy_main_thread = thread::spawn(move || {
Expand Down Expand Up @@ -142,7 +154,11 @@ fn bench_banking_tracer_background_thread_throughput(bencher: &mut Bencher) {

let (tracer, tracer_thread) =
BankingTracer::new(Some((&path, exit.clone(), 50 * 1024 * 1024))).unwrap();
let (non_vote_sender, non_vote_receiver) = tracer.create_channel_non_vote();
let Channels {
non_vote_sender,
non_vote_receiver,
..
} = tracer.create_channels(None);

let dummy_main_thread = thread::spawn(move || {
receiving_loop_with_minimized_sender_overhead::<_, TraceError, 0>(
Expand Down
5 changes: 3 additions & 2 deletions core/benches/sigverify_stage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,9 @@ fn bench_sigverify_stage(bencher: &mut Bencher, use_same_tx: bool) {
if let Ok(message) = verified_r.recv_timeout(Duration::from_millis(10)) {
let (verifieds, tracer_packet_stats) = (&message.0, message.1.as_ref().unwrap());
received += verifieds.iter().map(|batch| batch.len()).sum::<usize>();
total_tracer_packets_received_in_sigverify_stage +=
tracer_packet_stats.total_tracer_packets_received_in_sigverify_stage;
total_tracer_packets_received_in_sigverify_stage += tracer_packet_stats
.total_tracer_packets_received_in_sigverify_stage
.0;
test::black_box(message);
if total_tracer_packets_received_in_sigverify_stage >= sent_len {
break;
Expand Down
Loading
Loading