Vadim Tkachenko <vadim@percona.com> writes:
You ask good question re: INNODB_RW_LOCKS_USE_ATOMICS, this is actually one of main points of XtraDB to improve scalability on 8CPU+ boxes, so we just rely on it.
Yes, understood.
XtraDB can be built without INNODB_RW_LOCKS_USE_ATOMICS, but effect may be opposite - we can see slowdown instead of improvement.
Yes. I think there are two issues here. One is that we are replacing InnoDB with XtraDB in MariaDB. Thus we need XtraDB to build and work on all the platforms that MariaDB should work on. The other is to get good performance/scalability of XtraDB. This is very important on the major platforms, but maybe not on all platforms. So it seems that right now XtraDB relies on GCC intrinsics for the performance improvements. I personally think this is fine. We can build with GCC on the main performance platforms I think. The main non-GCC platform currently is Windows, so we need XtraDB to build and work with non-GCC, but I think for now 8CPU+ scalability on Windows is not the most important priority. Later we can then add Windows method for scalability, or maybe switch to also build with GCC on Windows.
I am not sure what to do with this, I also need to look into InnoDB-plugin 1.0.3, what solution they have and may be use new InnoDB rw_locks instead of ours. Anyway - this is something to discuss.
Ok. I will also look closer as time permits, checking the ./configure tests (already discussed this a bit with Sergei Golubchik) and the build failures when INNODB_RW_LOCKS_USE_ATOMICS is not defined.
About tests you should execute setup.sh from storage/innobase before running test, as it patches main test suite by InnoDB specific tests.
I did not want to put them into main test suite to keep all changes only to storage/innobase repository.
Ok. I understand why you keep this separate for XtraDB, thanks for the info. I will try this. It seems to me that once we replace InnoDB with XtraDB in the MariaDB tree, we can commit the changes done by setup.sh, do you agree?
In our tests only two tests do not pass after patches - it is main.variables_big and main.read_many_rows_innodb, but they also do not pass in native InnoDB-plugin.
Ok, I can hopefully take a look later, maybe we need to disable them until Oracle/Innobase team fixes them. - Kristian.