The Problem

In the last week, I had to set up an Oracle RAC (and thus, the Clusterware) version 12.2.0.1 on SuSE Linux Enterprise Server 12 SP2 (SLES12 Sp2). The gridSetup.sh failed latest in root.sh of the first node with a kinda non-intuitive error:

First Conclusions

This unlock_elision thing was unusual enough to raise suspicions. First, a little research about the term: Seems that Lock Elision is a part of Intel® Transactional Synchronization Extensions (Intel® TSX) and is described here. Long story short: A CPU extension to work with mutexes more efficiently, dealing with transactional serialisation on the chip. Cool stuff.

And for one or other reason, Oracle does not like that on this SLES12 SP2 system with this E5-26xx chip. Oracle came back with a short and somewhat cryptic hint: “Would it be possible to disable HLE and retry again?” Guess HLE means “Hardware Lock Elision”.

If we can’t have it, how can we get rid of it, to free our way?

SLES12 – How to disable Hardware Lock Elision Support

Lock Elision on Linux is used by the libpthread libraries, and thankfully, the distributor has prepared a plan B for people who are not blessed with this performance booster: in /lib64 is a directory “noelision” containing a symlink to an appropriately pre-configured libpthread-x.xx.so. All we have to do now is to ensure that dynamically linked binaries will use this instead of the “normal” one. I decided not to use ld.so.conf directly, but to use a “distributor-proof” approach and generate a noelision.conf in /etc/ld.so.conf.d, just containing:

/lib64/noelision

And, of course run “ldconfig -v” afterwards. Check its output for the new libpthread symlink, should be in the upper part.

There’s no point in checking the linker search path now (with gcc -v or ld itself), they will not change. Since we talk about the effect of dynamically linked libaries on started programs, all you can do is to look into the output of ldconfig -v as described above to check before re-testing gridSetup.sh.

Yes, that did the trick, and I am grateful.

Be careful how you choose your hardware, folks… Best regards
Martin

Thanks and Acknowledgements

My customer for patience, peace and peanuts. :)

A big Thanks to RAC PM Anil Nair (@RACMasterPM) for two short but VERY helpful tips that meant the breakthrough.

The Oracle RAC 12.2 designers for implementing the setup process in a restartable and dynamic fashion, especially helpful were the root.sh checkpoints and the “add-nodes-later feature”, both to reduce effort in re-starting, re-testing and simplifying test cases.