I would think that this problem is an AIX problem, not an Oracle problem.
Oracle on Unix uses processes, not threads. The most significant
advantage of P7 over P6 is the multi-core design, capable of 8 cores, if
I remember correctly, per CPU. With multi-core CPU solutions, there is
one significant problem: the efficiency of CPU cache. The rule is simple:
the more cores you have - less efficient the cache gets, because the
cache will get flushed so frequently that it's essentially useless.
Without the advantage of multithreading, your shining P7 is actually
quite a bit slower than P6, because of the frequency.
I am aware of the fact that each core has its own 32k+32k instruction and
data L1 cache, but there is a logical problem with that: caches have to
be coherent. When a core modifies location in memory, all other cores
have to check whether they have this location in their L1/L2 caches and
flush that cache line or the entire cache, that depends on the
implementation) and re-read it. I imagine that the impact of a software
like oracle which uses shared memory and is written to exploit the
locality of references (meaning that at one point in time oracle
processes do their best to stay within the small range of addresses) on
the CPU caches can be quite severe.
You should monitor the CPU consumption with sar and see how much time
does the machine spend in the kernel mode. If the average is above 10%,
than the AIX is responsible for your slowdown, not Oracle.
--
http://mgogala.byethost5.com