← Back to team overview

maria-discuss team mailing list archive

Re: Performance lags with MariaDB built from source

 

Hi Nisarg,

You mentioned that you compiled a debug build. Based on the
configuration parameters that you mention, I assume that your tables
are in the InnoDB storage engine.
InnoDB contains very many debug assertions that make it notoriously
slow. To make matters worse, by default, the debug builds are
unoptimized.

If you are only interested in debugging symbols and not debugging
instrumentation, then I suggest using
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo

In that way, you should see meaningful output in tools like 'perf
top'. The release build should be compiling with something like -O2 by
default, but it could be improved by setting -march=native
-mtune=native.

For what it is worth, for developing InnoDB, I normally use the
following build options, so that tests would run faster:

cmake -DCMAKE_{C_COMPILER=clang,CXX_COMPILER=clang++}-9 \
-DCMAKE_C{,XX}_FLAGS='-O2 -march=native -mtune=native
-Wno-unused-command-line-argument -fdebug-macro' \
-DCONC_WITH_{UNITTEST,SSL}=OFF -DWITH_EMBEDDED_SERVER=OFF
-DWITH_UNIT_TESTS=OFF \
-DCMAKE_BUILD_TYPE=Debug \
-DPLUGIN_{ARCHIVE,TOKUDB,MROONGA,OQGRAPH,ROCKSDB,CONNECT,SPIDER}=NO \
-DWITH_SAFEMALLOC=OFF -DWITH_{ZLIB,SSL}=system \
/path/to/source

For gcc, my spell is similar, except for the first two lines, which
are replaced by the following:

cmake -DCMAKE_C{,XX}_FLAGS='-O2 -m'{arch,tune}=native \

Above, I am disabling most other components than InnoDB, because I am
working on InnoDB internals. It is important to set
WITH_SAFEMALLOC=OFF if you are using WITH_ASAN=ON, because it would
only add unnecessary overhead and could hide some errors from ASAN. If
you do not know what ASAN is, I suggest visiting
https://github.com/google/sanitizers/wiki/.

Best regards,

Marko

On Wed, Dec 4, 2019 at 11:21 AM Nisarg Shah <nisargshah323@xxxxxxxxx> wrote:
>
> System config:
> OS: Ubuntu 18.04
> CPU: 2x Intel Xeon E5-2660 (40 logical cores)
> RAM: 160GB
>
> I built a debug build of MariaDB server 10.5 from the Github source
> and tried to load and execute the TPC-H benchmarks on it with a
> database size of 1GB. While loading the data and executing queries, I
> observed that MariaDB takes an unusually large amount of time (more
> than 10x compared to other databases like QuickStep or MonetDB) to
> load the data and execute queries (more than 10 minutes per query,
> compared to less than a minute for other databases). I'm running the
> server with following options -
>
> ./bin/mysqld --user=nisargs
> --datadir=/fastdisk/mariadb-server-install-2/data/
> --innodb-read-io-threads=40 --innodb-write-io-threads=40
> --innodb-buffer-pool-size=16G --innodb-buffer-pool-instances=40
>
> I just wanted to get some eyes on this and check if there is something
> wrong with the command line options (or whether I can tweak some
> options to improve performance). I'm just trying to conduct some
> benchmarking experiments and not very familiar with databases.
>
> Thanks
> Nisarg
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-discuss
> Post to     : maria-discuss@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-discuss
> More help   : https://help.launchpad.net/ListHelp



-- 
Marko Mäkelä, Lead Developer InnoDB
MariaDB Corporation


Follow ups

References