]>
git.proxmox.com Git - proxmox-backup.git/blob - src/bin/test_chunk_speed2.rs
4 extern crate proxmox_backup
;
6 use proxmox_backup
::backup
::*;
8 // Test Chunker with real data read from a file.
10 // To generate some test input use:
11 // # dd if=/dev/urandom of=random-test.dat bs=1M count=1024 iflag=fullblock
13 // Note: I can currently get about 830MB/s
16 if let Err(err
) = proxmox_backup
::tools
::runtime
::main(run()) {
17 panic
!("ERROR: {}", err
);
21 async
fn run() -> Result
<(), Error
> {
23 let file
= tokio
::fs
::File
::open("random-test.dat").await?
;
25 let stream
= tokio_util
::codec
::FramedRead
::new(file
, tokio_util
::codec
::BytesCodec
::new())
26 .map_ok(|bytes
| bytes
.to_vec())
27 .map_err(Error
::from
);
29 //let chunk_stream = FixedChunkStream::new(stream, 4*1024*1024);
30 let mut chunk_stream
= ChunkStream
::new(stream
, None
);
32 let start_time
= std
::time
::Instant
::now();
35 let mut stream_len
= 0;
36 while let Some(chunk
) = chunk_stream
.try_next().await?
{
37 if chunk
.len() > 16*1024*1024 {
38 panic
!("Chunk too large {}", chunk
.len());
42 stream_len
+= chunk
.len();
44 println
!("Got chunk {}", chunk
.len());
47 let speed
= ((stream_len
*1_000_000)/(1024*1024))/(start_time
.elapsed().as_micros() as usize);
48 println
!("Uploaded {} chunks in {} seconds ({} MB/s).", repeat
, start_time
.elapsed().as_secs(), speed
);
49 println
!("Average chunk size was {} bytes.", stream_len
/repeat
);
50 println
!("time per request: {} microseconds.", (start_time
.elapsed().as_micros())/(repeat
as u128
));