> On Mon, Oct 30, 2017 at 09:23:51PM +0200, Mihai Popescu wrote:
..
> Back in a former life, I often had to transfer terabytes of information
> between hosts in my network. The goal was to reduce the overhead of the
> transfer so that more of the data would get transferred. I had been
> using netcat/nc and pushing data through the connection as fast as I
> could. This worked great, provided I could verify that things were being
> transferred without errors. Any connection problems and I'd be screwed.
..
> Essentially, he's compressing files and then sending them over to fit
> more data down the pipe. I also learned of this other program called
..
> Check those out, and I'm very curious if anyone else on the list has
> more OpenBSD-centric techniques!

For file transfers today, I presume speed is limited not by the networking 
subsystem  or even by compression speed, but instead by the block device/file 
IO subsystem, which has a cap last time I checked of around 120MB/sec 
system-wide.

(Faster for retrieval from the buffer cache, however that boost drops very 
quickly.)

A SATA SSD gives you ~~450MB/sec, and an M.2 NVME SSD gives you ~~900MB/sec, 
sequential and random. You get multipliers of that in a RAID.


You get some of this performance in OpenBSD today if you make your accesses to 
/dev/rsd* only, and of 16KB-aligned 16KB multiples, that makes OpenBSD yield 
~600MB/sec or so, however this access mode has tons of limitations, for 
instance /dev/rsd* doesn't support mmap().


My best understanding of OpenBSD's block device/file IO subsystem is that it 
has a "biglock" and that all underlying disk/file access is serialized / 
totally synchronous, with no support for or use of multiqueuing or any other 
parallellization.

Implementing asynchronous logics is tedious and from a security perspective I 
would understand the charm of keeping an implementation that is cemented to be 
synchronous only. Is this what's going on?


All this leads me to the perception that of all areas in OpenBSD, disk/file IO 
is the weakest/the one with the least strengths, compared to many other areas 
where obviously OpenBSD is the very best.

(Way lower priority topics, however related, are unified buffer cache 
https://marc.info/?t=143228266700001&r=1&w=2 and the buffer cache 4GB limit 
https://marc.info/?t=145538710500002&r=1&w=2 , 
https://marc.info/?l=openbsd-tech&m=147905745617957&w=2 , 
https://marc.info/?t=146824436600004&r=1&w=2 , 
https://unix.stackexchange.com/questions/61459/does-sysctl-kern-bufcachepercent-not-work-in-openbsd-5-2-above-1-7gb
 .)


Is there any interest among developers to speed up the disk/file IO?

What would it actually involve?

What's needed from the community, donations? Would directed donations be 
welcome?

Thank you very much and sorry for the buzz.

Reply via email to