Searching for regressions in RocksDB with db_bench: part 2
Small Datum
by Mark Callaghan
3d ago
In a recent post I shared results for RocksDB performance tests using versions from 6.0 through 9.0 and 3 different types of servers (small, medium, big). While there were few regressions over time, there is one regression that arrived in version 8.6, bug 12038, and the workarounds are one of: use O_DIRECT for compaction reads set compaction_readahead_size to be <= max_sectors_kb for the database storage device. When SW RAID is used I don't know whether the value that matters is from the underlying storage devices or the SW RAID device. In this post I have more results from tests done wit ..read more
Visit website
MyRocks vs InnoDB on cached sysbench: revised
Small Datum
by Mark Callaghan
3d ago
A few weeks ago I shared results for sysbench with InnoDB and MyRocks on a variety of servers. The worst-case for MyRocks occurred on a 2-socket server with the write microbenchmarks. After some performance debugging I learned that changing the CPU frequency governor from schedutil to performance increased QPS by ~2X for the worst cases (see here) with MyRocks. Note that for Ubuntu 22.04 the default for the CPU frequency governor is schedutil. This blog post shares results for the 2-socket server after I repeated all tests with the performance CPU frequency governor. tl;dr MyRocks uses ..read more
Visit website
Make MyRocks 2X faster by changing the CPU frequency governor
Small Datum
by Mark Callaghan
1w ago
Thank you for clicking on my of my better clickbait titles. Obviously this trick won't work everywhere but it does work on one of my home servers. tl;dr Switching from the Ubuntu 22.04 Server default CPU frequency governor (schedutil) to the performance governor increases QPS by ~2X for many write-heavy microbenchmarks with MyRocks on one of my large home servers. The problem is that Linux is under-clocking the CPU with MyRocks on the server with the schedutil frequency governor. Switching to the performance frequency governor fixes that -- I am not making MyRocks faster by over-clocking.&nbs ..read more
Visit website
MySQL 8.0.38 vs the Insert Benchmark on a medium server
Small Datum
by Mark Callaghan
1w ago
This has benchmark results for MySQL 8.0.38 and a few other 8.0 releases using the Insert Benchmark and a medium server. By small, medium or large server I mean < 10 cores for small, 10 to 19 cores for medium, 20+ cores for large. A result for Postgres 17 on the same server is here. tl;dr Performance for the write-heavy (l.i0, l.i1, l.i2) and point-query tests is ~5% worse after 8.0.28 and that has yet to be fixed. AFAIK, one problem is from changes related to function inlining for InnoDB, see PS-8822 and bug 111538. Throughput for range queries (qr100, qr500, qr1000) i ..read more
Visit website
Postgres 17beta2 vs the Insert Benchmark on a medium server:: looking good
Small Datum
by Mark Callaghan
2w ago
This has benchmark results for Postgres 17beta2 using the Insert Benchmark and a medium server. By small, medium or large server I mean < 10 cores for small, 10 to 19 cores for medium, 20+ cores for large. A result for sysbench from the same server is here. Results for the Insert Benchmark comparing 16.3 and 17beta1 on large server are here and here. This work was done by Small Datum LLC. tl;dr 17beta2 looks good but results on public cloud HW might have more noise I will repeat tests on my home servers soon Builds, configuration and hardware I compiled Postgres versions 16.3, 17be ..read more
Visit website
MyRocks vs InnoDB on cached sysbench
Small Datum
by Mark Callaghan
2w ago
This post compares MyRocks and InnoDB using sysbench with a cached database. The first goal is to understand the differences in CPU overhead between MyRocks and InnoDB. The second goal is to identify things that can be improved in MyRocks. tl;dr There are small regressions from MyRocks 5.6 to 8.0, usually <= 10%. I assume most of this is from changes in upstream MySQL that are in code above the storage engine layer. MyRocks uses more CPU than InnoDB on cached sysbench, thus InnoDB gets more QPS. While many conference papers explain IO read amplification as an issue for an LSM, the more lik ..read more
Visit website
The journey to explain performance regressions in MySQL
Small Datum
by Mark Callaghan
3w ago
I have spent much time documenting performance regressions from new CPU overheads in MySQL. Soon I will be spending much time trying to explain the source of the regressions with perf, flamegraphs and more. This post is one step in the journey and it shows how performance changes from MySQL 5.6.35 through 8.0.37 using 5 different servers. Previous posts showed the impact of LTO and PGO. Questions I try to answer in this post: Where in the release cycle do the biggest regressions occur? Are the regressions smaller on the larger servers? One hypothesis is that the regressions are larger at low ..read more
Visit website
The impact of PGO for MySQL
Small Datum
by Mark Callaghan
3w ago
This post explains the benefit from PGO (profile guided optimization) on MySQL. A previous post showed that LTO (link time optimization) reduces CPU (improves throughput) by about 5% for CPU-bound sysbench. The goals here are: Determine the impact of PGO Determine the impact of PGO + LTO Determine whether PGO binary that used sysbench to generate the profile is useful when running other benchmarks (in short, yes, but the longer answer waits for another blog post). Determine whether PGO helps MySQL 8.0 more than 5.6 and 5.7. A hypothesis is that the many perf regressions in MySQL 8.0 are from ..read more
Visit website
The impact of link time optimization for MySQL with sysbench
Small Datum
by Mark Callaghan
1M ago
This post has results to show the benefit from using link time optimization for MySQL. That is enabled via the CMake option -DWITH_LTO=ON. tl;dr A typical improvement is ~5% more QPS from link time optimization On the small servers (PN53, SER4) the benefit from link-time optimization was larger for InnoDB than for MyRocks. On the medium server (C2D) the benefit was similar for MyRocks and InnoDB. Builds I used InnoDB from MySQL 8.0.37 and MyRocks from FB MySQL compiled on git sha 65644b82c which uses RocksDB 9.3.1 and was latest as of June 12, 2024. Hardware I tested on three servers ..read more
Visit website
A simple test to measure CPU per IO
Small Datum
by Mark Callaghan
1M ago
What should I expect with respect to CPU overhead and latency when using the public cloud. I won't name the vendor here because they might have a DeWitt Clause. Hardware My server has 16 real cores, HT or SMT disabled, Ubuntu 22.04 and ext4 is used in all cases. The two IO setups tested are: local - 2 NVMe devices with SW RAID 0 network - 1TB of fast cloud block storage that is backed by SSD and advertised as being targeted for database workloads. Benchmark This uses fio with O_DIRECT to do 4kb block reads. My benchmark script is here it is run by the following command lines and I igno ..read more
Visit website

Follow Small Datum on FeedSpot

Continue with Google
Continue with Apple
OR