On Feb 27, 2009, at 12:02 PM, jkeane (AT) revenue (DOT) ie wrote:
Quote:
While monitoring the performance of a slow running program on a
Solaris 9 Ingres 2.6 installation, iimonitor sampling showed
SortThread at 100% computable. The active dbms session on this dbms
was using only 1% of cpu (from prstat -L).
Can anyone tell me what "SortThread at 100% computable" indicates
about the program behaviour? Are there any Ingres tuning
considerations? |
Well, it means that every time the sampler thread woke up (which
happens at short regular interavls, although I don't remember
the sampling frequency), it queried the state in the Ingres
session control block for all the threads. Every time it sampled
a Sort thread, the state was Computable -- which actually means
that it wasn't anything else, like BIO, DIO, etc.
This might mean:
- that the sampler saw a Sort thread only very infrequently, and
when it did, the thread just happened to be computable;
- that there is some sort of "resonance" between the sampler
and the Sort threads, such that the sort threads aren't in wait
states when the sampler wakes up (Very unlikely!)
- that the Sort threads aren't actually running, but are in some
short-term wait state that doesn't change the state code in the
session control block (also unlikely, implies the CL has overlooked
some sort of wait state);
- or that there really are Sort threads that are taking up a lot of
CPU time with very little waiting of any sort.
The first and last are the most likely. Given the low numbers under
the Computing Analysis section, I'm inclined to think it's the first;
meaning that very little time is spent sorting and the sampler just
happened to catch a fleeting glimpse of a sort thread in computable
state.
If the sort threads really are running a lot, at 100% cpu, it should be
easy to see from "show system sessions", and cpu usage from vmstat
or equivalent should be at least one cpu's worth at least over the
short term, a few seconds worth.
Karl