Engineered for Innovation at OOW11 – are you using Turbo Boost for your Oracle Database?

So the theme here at Oracle Openworld 2011 is "engineered for innovation" and its great to see Intel Xeon platforms dominate the line-up of engineered solutions. Its also great to know that taking an open approach you can engineer your own solution of choice and my session on performance and scalability with Eric Wan focused on some tips on how to go about achieving this. For example I have a had a number of follow up questions around turbo boost, so here is the link from Julian Dyke (my co-author on Pro Oracle 10g RAC on Linux) and here is Julian's PL/SQL.


  n NUMBER := 0;
  FOR f IN 1..10000000
    n := MOD (n,999999) + SQRT (f);
  DBMS_OUTPUT.PUT_LINE ('Res = '||TO_CHAR (n,'999999.99'));

If you were in the session you will know the difference between performance and scalability and this routine is single threaded so the focus is most definitely on the single threaded performance side but gives a great insight into the Intel turbo boost feature. Of course calcuating mathematical routines to measure performance are not new but I really like Julian's idea of a test for Oracle DBA's that can be run on any Oracle instance on any system including an ASM instance.

So what is Turbo Boost?  Turbo Boost allows an increase to the frequency of your cores when operating conditions allow, From an Oracle perspective the benefits are mostly seen when running single-threaded queries or PL/SQL.

Your first port of call should be to see if your CPU supports turbo boost so for example checking here on the site I can see that the E7-8870 has a clock speed of 2.4GHz and  a max turbo frequency of 2.8GHz. If your CPU does support turbo boost you should then check your BIOS settings to see if it is enabled on your system. (You have checked your BIOS settings for maximum Oracle performance haven't you?)

If you have turbo boost and its enabled if you are running Oracle on Linux you might think you can look in /proc/cpuinfo to view the turbo boost frequency, after all it does change dynamically but you won't actually see it here, you need to get the turbostat utility that is included in the pmtools package to view the turbo boost frequency.

So now using the PL/SQL test in the session we showed an example of the Intel Xeon Processor 5680 with a clock speed of 3.33GHz and a Max turbo frequency of 3.6GHz. This is a frequency boost in this case of 1.08X and the PL/SQL test ran in 8.89 secs with turbo boost off (at the BIOS) and 8.21 with it enabled (again at the BIOS level). An Oracle performance gain of 1.08X that directly corresponds to the CPU feature.

Remember this gain is on one core so when you are running Oracle workloads these incremental gains add up to process your workload faster and now you know how to test for whether you have turbo boosted your Oracle workload.