2017-02-09 Mikael <mikael.ml...@gmail.com>:

> Dear misc@,
>
> *## Intro, environment*
> Find below a comparative benchmark of OpenBSD 6.0 vs Linux 4.7 read speeds
> on a 3.3Ghz Xeon E3 server with a Samsung 850 Pro 256GB SATA SSD, which is
> one of the very fastest SSD:s in the sub-1000USD/TB price range. dmesg
> below.
>
[..]

Someone reminded me to benchmark rsd0c vs. sd0c on OpenBSD, and there are
some great surprises in there!:

Random multithreaded actually goes up to 198MB/sec at 4KB, and 578MB/sec at
16KB, and sequential multithreaded follows the same curve.

So OpenBSD's current IO subsystem gives ~31,000 IOPS for 16KB random and
sequential reads, multithreaded.

This is excellent and shows that a custom database program on current
OpenBSD indeed can utilize all bandwidth of a SATA SSD!

The 4K multithreaded random and sequential read performs at 2/3 of Linux,
which is also not bad.

The natural next step in understanding SSD performance would be to
benchmark two SATA SSD:s (on separate SATA plugs), on OpenBSD rsd0c,
OpenBSD sd0c, and Linux sd0 .


*Benchmark details*

Unlike sd0c , rsd0c cannot be mmap():ed.

Also, rsd0c requires reads to be aligned? - which is fine for any database
usecase as these are based on internal pages anyhow.

Sequential singlethreaded: 4KB is 121MB/sec, 16KB is 225MB/sec, and 64KB+
is 342MB/sec.

Sequential 10-threaded: 4KB is 19MB/sec per process so 190MB/sec total (vs.
sd0c's 48MB/sec total), 16KB is 50MB/sec per process so 500MB/sec total
(vs. sd0c's 150MB/sec total), 64KB is 53MB/sec so 530MB/sec total (vs.
sd0c's 288MB/sec total).

Random singlethreaded: 4KB is 45MB/sec (so same as sd0c), 16KB is 132MB/sec
(vs. sd0c's 52MB/sec), 32KB is 198MB/sec (vs. sd0c's 67MB/sec), 64KB is
264MB/sec (vs. sd0c's 85MB/sec).

Random 10-threaded 4KB is 19.6MB/sec per process so 196MB/sec total (yey,
that's 4x sd0c!), 16KB is 48MB/sec per process so 480MB/sec total, 32KB is
51MB/sec per process so 510MB/sec, and 64KB is 53MB/sec per process so
530MB/sec.

Random 20-threaded 4KB is 9.9MB/sec per process so 198MB/sec, 16KB is
24.8MB/process so 496MB/sec total, 32KB is 25.9MB/process so 518MB/sec.

Random 40-threaded 4KB is 4.95MB/process so 198MB/sec total, 16KB is
14.45MB/process so 578MB/sec total, 32KB is 12.99MB/process so 519MB/sec.

Reply via email to