Fix pinning (#6604)
Remove Deref implementations and add more pass-throughs to the PinnedVec wrapper. Warm recyclers set_pinnable
This commit is contained in:
@ -921,7 +921,7 @@ impl Archiver {
|
||||
let res = r_reader.recv_timeout(Duration::new(1, 0));
|
||||
if let Ok(mut packets) = res {
|
||||
while let Ok(mut more) = r_reader.try_recv() {
|
||||
packets.packets.append(&mut more.packets);
|
||||
packets.packets.append_pinned(&mut more.packets);
|
||||
}
|
||||
let shreds: Vec<Shred> = packets
|
||||
.packets
|
||||
|
@ -16,6 +16,7 @@ use solana_ledger::{
|
||||
};
|
||||
use solana_measure::measure::Measure;
|
||||
use solana_metrics::{inc_new_counter_debug, inc_new_counter_info, inc_new_counter_warn};
|
||||
use solana_perf::cuda_runtime::PinnedVec;
|
||||
use solana_perf::perf_libs;
|
||||
use solana_runtime::{accounts_db::ErrorCounters, bank::Bank, transaction_batch::TransactionBatch};
|
||||
use solana_sdk::{
|
||||
@ -789,7 +790,7 @@ impl BankingStage {
|
||||
filtered_unprocessed_packet_indexes
|
||||
}
|
||||
|
||||
fn generate_packet_indexes(vers: &[Packet]) -> Vec<usize> {
|
||||
fn generate_packet_indexes(vers: &PinnedVec<Packet>) -> Vec<usize> {
|
||||
vers.iter()
|
||||
.enumerate()
|
||||
.filter_map(
|
||||
|
@ -1,6 +1,7 @@
|
||||
//! The `fetch_stage` batches input from a UDP socket and sends it to a channel.
|
||||
|
||||
use crate::banking_stage::FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET;
|
||||
use crate::packet::PacketsRecycler;
|
||||
use crate::poh_recorder::PohRecorder;
|
||||
use crate::result::{Error, Result};
|
||||
use crate::service::Service;
|
||||
@ -92,7 +93,8 @@ impl FetchStage {
|
||||
sender: &PacketSender,
|
||||
poh_recorder: &Arc<Mutex<PohRecorder>>,
|
||||
) -> Self {
|
||||
let recycler = Recycler::default();
|
||||
let recycler: PacketsRecycler = Recycler::warmed(1000, 1024);
|
||||
|
||||
let tpu_threads = sockets.into_iter().map(|socket| {
|
||||
streamer::receiver(
|
||||
socket,
|
||||
|
@ -1,6 +1,6 @@
|
||||
//! The `shred_fetch_stage` pulls shreds from UDP sockets and sends it to a channel.
|
||||
|
||||
use crate::packet::Packet;
|
||||
use crate::packet::{Packet, PacketsRecycler};
|
||||
use crate::service::Service;
|
||||
use crate::streamer::{self, PacketReceiver, PacketSender};
|
||||
use solana_perf::cuda_runtime::PinnedVec;
|
||||
@ -67,7 +67,8 @@ impl ShredFetchStage {
|
||||
sender: &PacketSender,
|
||||
exit: &Arc<AtomicBool>,
|
||||
) -> Self {
|
||||
let recycler = Recycler::default();
|
||||
let recycler: PacketsRecycler = Recycler::warmed(100, 1024);
|
||||
|
||||
let tvu_threads = sockets.into_iter().map(|socket| {
|
||||
streamer::receiver(
|
||||
socket,
|
||||
|
@ -23,8 +23,8 @@ impl Default for TransactionSigVerifier {
|
||||
fn default() -> Self {
|
||||
init();
|
||||
Self {
|
||||
recycler: Recycler::default(),
|
||||
recycler_out: Recycler::default(),
|
||||
recycler: Recycler::warmed(50, 4096),
|
||||
recycler_out: Recycler::warmed(50, 4096),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,8 @@ impl ShredSigVerifier {
|
||||
Self {
|
||||
bank_forks,
|
||||
leader_schedule_cache,
|
||||
recycler_offsets: Recycler::default(),
|
||||
recycler_out: Recycler::default(),
|
||||
recycler_offsets: Recycler::warmed(50, 4096),
|
||||
recycler_out: Recycler::warmed(50, 4096),
|
||||
}
|
||||
}
|
||||
fn read_slots(batches: &[Packets]) -> HashSet<u64> {
|
||||
|
@ -287,7 +287,7 @@ mod test {
|
||||
service::Service,
|
||||
};
|
||||
use crossbeam_channel::unbounded;
|
||||
use rand::{seq::SliceRandom, thread_rng};
|
||||
use rand::thread_rng;
|
||||
use solana_ledger::shred::DataShredHeader;
|
||||
use solana_ledger::{
|
||||
blocktree::{get_tmp_ledger_path, make_many_slot_entries, Blocktree},
|
||||
|
Reference in New Issue
Block a user