Bug #79385 innodb_use_native_aio=1 will be ignored silently
Submitted: 23 Nov 2015 11:32 Modified: 5 Apr 2017 6:03
Reporter: Shahriyar Rzayev Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:5.6.27 OS:CentOS (7)
Assigned to: CPU Architecture:Any

[23 Nov 2015 11:32] Shahriyar Rzayev
Description:
Compiled MySQL 5.6.27 from source as followed:

cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.6.27 -DMYSQL_DATADIR=/opt/mysql-5.6.27/datadir -DSYSCONFDIR=/opt/ -DWITH_SSL=system -DMYSQL_TCP_PORT=3310 -DMYSQL_UNIX_ADDR=/opt/mysql-5.6.27/mysqld.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=1 -DCOMPILATION_COMMENT="Shahriyar Rzayev's MySQL Server" -DOPTIMIZER_TRACE=1 -DWITH_ZLIB=system -DWITH_VALGRIND=1 -DCMAKE_C_FLAGS=-DHAVE_purify -DCMAKE_CXX_FLAGS=-DHAVE_purify -DENABLE_DOWNLOADS=1

Started as:

scripts/mysql_install_db --defaults-file=/opt/mysql-5.6.27/my.cnf --datadir=/opt/mysql-5.6.27/datadir

/opt/mysql-5.6.27/bin/mysqld_safe --defaults-file=/opt/mysql-5.6.27/my.cnf --user=mysql --datadir=/opt/mysql-5.6.27/datadir --socket=/opt/mysql-5.6.27/datadir/mysqld-new.sock --pid-file=/opt/mysql-5.6.27/datadir/mysqld-new.pid --port=3310  --log-error=/opt/mysql-5.6.27/datadir/error.err &

By default:

"select @@innodb_use_native_aio"
+-------------------------+
| @@innodb_use_native_aio |
+-------------------------+
|                       0 |
+-------------------------+

adding innodb_user_native_aio=1 in my.cnf and restarting. Result will be same:

"select @@innodb_use_native_aio"
+-------------------------+
| @@innodb_use_native_aio |
+-------------------------+
|                       0 |
+-------------------------+

There is no related information in error log as well. So it is ignored silently.

How to repeat:
See description

Suggested fix:
Adding output in error log indicating the reason of ignoring innodb_use_native_aio=1 setting.
Documentation states that:

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_use_native_aio

"This option may also be turned off automatically during startup if InnoDB detects a potential problem such as a combination of tmpdir location, tmpfs filesystem, and Linux kernel that does not support AIO on tmpfs"

If InnoDB detects potential problem it should indicate these problems.
[23 Nov 2015 12:13] Shahriyar Rzayev
It turns out that, there was a missing package -> libaio-devel, that's why innodb_use_native_aio=1 has no effect.

For diff:

[root@testing-host1 ~]# ldd /opt/mysql-5.6.27/bin/mysqld
	linux-vdso.so.1 =>  (0x00007fff8b75b000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f18c57b4000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f18c559e000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f18c5366000)
	libssl.so.10 => /lib64/libssl.so.10 (0x00007f18c50f9000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f18c4d12000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f18c4b0d000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f18c4806000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f18c4504000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f18c42ed000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f18c3f2c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f18c59d7000)
	libfreebl3.so => /lib64/libfreebl3.so (0x00007f18c3d29000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f18c3adc000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f18c37f9000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f18c35f5000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f18c33c2000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f18c31b3000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f18c2fae000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f18c2d94000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f18c2b6f000)
	libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f18c290d000)
	liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f18c26e8000)

[root@testing-host1 ~]# ldd /opt/mysql-aio-5.6.27/bin/mysqld
	linux-vdso.so.1 =>  (0x00007fffac7fe000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc337ebe000)
	libaio.so.1 => /lib64/libaio.so.1 (0x00007fc337cbc000)
	libz.so.1 => /lib64/libz.so.1 (0x00007fc337aa5000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fc33786e000)
	libssl.so.10 => /lib64/libssl.so.10 (0x00007fc337601000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fc337219000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fc337015000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc336d0e000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fc336a0b000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc3367f5000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fc336434000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fc3380e1000)
	libfreebl3.so => /lib64/libfreebl3.so (0x00007fc336230000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fc335fe4000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fc335d01000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fc335afc000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fc3358ca000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fc3356ba000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fc3354b6000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc33529c000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fc335076000)
	libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fc334e15000)
	liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fc334bf0000)
[5 Apr 2017 6:03] MySQL Verification Team
Thank you for confirming, based on last comment marking it as !bg.

Thanks,
Umesh