Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.6
-
None
-
None
-
SUSE Enterprise Linux 15 SP4, openSUSE Tumbleweed
Description
MariaDB 10.6 has O_DIRECT value as default for innodb_flush_method instead of fsync. This lead to a performance regression in the default configuration, regardless of the filesystem used.
To benchmark the performance, I have used sysbench-0.4.8 oltp read test on btrfs (the most affected), ext4 and xfs.
Filesystem | threads | innodb_flush_method=fsync | innodb_flush_method=O_DIRECT |
---|---|---|---|
ext4 | 1 | 6.5s | 7.0s |
ext4 | 16 | 0.97s | 1.15s |
brtfs | 1 | 6.5s | 77s |
brtfs | 16 | 0.8s | 3.1s |
xfs | 1 | 6.4s | 7.2s |
xfs | 16 | 0.8s | 1.1s |
I have used a mount point in /abuild and the following configuration in /etc/my.cnf.d/sysbench_testing.cnf:
[mysqld]
|
port = 3306
|
datadir=/abuild/mysql-sysbench
|
socket=/abuild/mysql-sysbench/sysbench-mysql.sock
|
#innodb_flush_method=fsync
|
To reproduce, run the following commands:
$ # prepare the db
|
$ sysbench --test=oltp --mysql-user=root \
|
--mysql-socket=/abuild/mysql-sysbench/sysbench-mysql.sock \
|
--mysql-db=test --mysql-port=3306 \
|
--oltp-dist-type=uniform --oltp-read-only --oltp-order-ranges=0 \
|
--oltp-table-size=1000000 --oltp-range-size=1000 prepare
|
$ # run the benchmark
|
$ sysbench --test=oltp --mysql-user=root \
|
--mysql-socket=/abuild/mysql-sysbench/sysbench-mysql.sock \
|
--mysql-db=test --mysql-port=3306 \
|
--oltp-dist-type=uniform --oltp-read-only --oltp-order-ranges=0 \
|
--oltp-table-size=1000000 --oltp-range-size=1000 \
|
--num-threads=$NTHREADS run
|
$ # cleanup the db
|
$ sysbench --test=oltp --mysql-user=root \
|
--mysql-socket=/abuild/mysql-sysbench/sysbench-mysql.sock \
|
--mysql-db=test --mysql-port=3306 cleanup >/dev/null 1>&2
|
I am also aware that some testing by some colleague lead to similar regression in xfs (353.5476s in 10.6 vs 16.9560s in 10.5).
Attachments
Issue Links
- is duplicated by
-
MDEV-31227 innodb_flush_method=O_DIRECT causes 3x regression in workload
- Closed
- relates to
-
MDEV-19895 Support "autoset" in SET GLOBAL for AUTO_SET system variables
- Open
-
MDEV-24670 avoid OOM by linux kernel co-operative memory management
- Closed
-
MDEV-27812 Allow innodb_log_file_size to change without server restart
- Closed
-
MDEV-24854 Change innodb_flush_method=O_DIRECT by default
- Closed