Use smaller batch size in sigverify stage if CUDA is not available (#3951)

This commit is contained in:
Pankaj Garg
2019-04-23 12:41:50 -07:00
committed by GitHub
parent 29698fcd38
commit d22a1c9b1f
2 changed files with 12 additions and 6 deletions

View File

@ -18,6 +18,12 @@ use std::sync::{Arc, Mutex};
use std::thread::{self, Builder, JoinHandle};
use std::time::Instant;
#[cfg(feature = "cuda")]
const RECV_BATCH_MAX: usize = 60_000;
#[cfg(not(feature = "cuda"))]
const RECV_BATCH_MAX: usize = 1000;
pub type VerifiedPackets = Vec<(Packets, Vec<u8>)>;
pub struct SigVerifyStage {
@ -52,8 +58,10 @@ impl SigVerifyStage {
sigverify_disabled: bool,
id: usize,
) -> Result<()> {
let (batch, len, recv_time) =
streamer::recv_batch(&recvr.lock().expect("'recvr' lock in fn verifier"))?;
let (batch, len, recv_time) = streamer::recv_batch(
&recvr.lock().expect("'recvr' lock in fn verifier"),
RECV_BATCH_MAX,
)?;
inc_new_counter_info!("sigverify_stage-packets_received", len);
let now = Instant::now();

View File

@ -19,8 +19,6 @@ pub type PacketSender = Sender<Packets>;
pub type BlobSender = Sender<SharedBlobs>;
pub type BlobReceiver = Receiver<SharedBlobs>;
const RECV_BATCH_MAX: usize = 60_000;
fn recv_loop(sock: &UdpSocket, exit: Arc<AtomicBool>, channel: &PacketSender) -> Result<()> {
loop {
let mut msgs = Packets::default();
@ -63,7 +61,7 @@ fn recv_send(sock: &UdpSocket, r: &BlobReceiver) -> Result<()> {
Ok(())
}
pub fn recv_batch(recvr: &PacketReceiver) -> Result<(Vec<Packets>, usize, u64)> {
pub fn recv_batch(recvr: &PacketReceiver, max_batch: usize) -> Result<(Vec<Packets>, usize, u64)> {
let timer = Duration::new(1, 0);
let msgs = recvr.recv_timeout(timer)?;
let recv_start = Instant::now();
@ -75,7 +73,7 @@ pub fn recv_batch(recvr: &PacketReceiver) -> Result<(Vec<Packets>, usize, u64)>
len += more.packets.len();
batch.push(more);
if len > RECV_BATCH_MAX {
if len > max_batch {
break;
}
}