Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
-
None
-
should be reproducible on any linux where sync is really flushes changes onto disk (i.e. not faked).
Description
According to documentation debug-no-sync Disables system sync calls
But it doesn't disable the calls from all places, which affects benchmarks and timing of testing where disk sync must be excluded from scope.
There are two ways to prove it.
1. running mysql_install_db with eatmydata is twice faster than with --debug-no-sync:
> rm -rf dt ; mkdir dt; time ( mysql_install_db --no-defaults --data=$PWD/dt --debug-no-sync >& /dev/null ) |
|
real 0m1.232s
|
user 0m0.175s
|
sys 0m0.082s
|
> rm -rf dt ; mkdir dt; time ( eatmydata mysql_install_db --no-defaults --data=$PWD/dt >& /dev/null ) |
|
real 0m0.676s
|
user 0m0.148s
|
sys 0m0.082s
|
2. Capturing stack traces e.g. during mysql_install_db shows hanging calls to fdatasync().
terminal1 (will show stack traces):
while :; do gdb -ex "set pagination 0" -ex "thread apply all bt" --batch -p $(pidof mariadbd) 2>&1 | grep -A15 fdatasync ; done |
terminal2 (run server, e.g. mysql_install_db):
rm -rf dt ; mkdir dt; time ( mysql_install_db --no-defaults --data=$PWD/dt --debug-no-sync >& /dev/null ) |
see the attached logs for details of stack traces.
Attachments
Issue Links
- relates to
-
MDEV-30136 Map innodb_flush_method to new settable Booleans innodb_{log,data}_file_{buffering,write_through}
- Closed