Hello,

The reason why one may see higher counts for events different from
CPU_CLK_UNHALTED
while running in system-wide comes from what actually happens when the system is
idle. In per-thread mode, you are only measuring while the thread is
running. In system-wide,
you are measuring even when the CPU goes into idle and eventually into
lower power mode,
i.e., halted state. By definition, CPU_CLK_UNHALTED measures when you
are NOT halted.
However, for other events, it depends on what they measure. It would
not surprise me if
DISPATCH_STALLS keeps on counting while in lower-power state, simply because it
measures something that is still active.

Perfmon does not explicitly stop monitoring when idle. There is a good
reason for that
and you just witnessed it. Some events keep on counting and some people may want
to see what is going on on the buses or caches when the CPU is in idle.

I am sure that if you restrict your system-wide measurements to
user-level (-u), then you
won't see the discrepancy.

Hope this helps.



On Wed, Mar 26, 2008 at 3:19 PM, Pranav <[EMAIL PROTECTED]> wrote:
> Hello All,
>
>  I have been playing a lot with Per-Thread monitoring of perfmon for
>  characterization of database server workloads. The results that I have
>  gotten in per-thread mode are quite accurate.
>
>  However, I did the same analysis in a system-wide measurement mode and I
>  am getting values which seem wrong to me. I would like any of your
>  inputs on this.
>
>  The following is the detailed listing for system-wide mode.
>
>  [EMAIL PROTECTED] pfmon  --aggregate-results
>  --system-wide -uk --verbose -e CPU_CLK_UNHALTED,DISPATCH_STALLS --
>  <command to start the sql client>
>
>  selected CPUs (2 CPU in set, 2 CPUs online): CPU0 CPU1
>  <startup information>
>  using hardware breakpoints
>  unavailable_pmcs=0xfffffffffffffff0
>  [PERFSEL0(pmc0)=0x530076 emask=0x76 umask=0x0 os=1 usr=1 inv=0 en=1
>  int=1 edge=0 cnt_mask=0] CPU_CLK_UNHALTED
>  [PERFCTR0(pmd0)]
>  [PERFSEL1(pmc1)=0x5300d1 emask=0xd1 umask=0x0 os=1 usr=1 inv=0 en=1
>  int=1 edge=0 cnt_mask=0] DISPATCH_STALLS
>  [PERFCTR1(pmd1)]
>  <other unrelated info>
>
>  system wide session on 2 processor(s)
>  vCPU0 -> pCPU0
>  vCPU1 -> pCPU1
>
>  results are on terminal
>
>  starting process [3230]: <command to start the mysql client>
>  waiting for [3230] to exec
>  results are on terminal
>  CPU1 started monitoring
>  CPU0 started monitoring
>
>  <output here>
>
>  CPU0   stopped monitoring
>  set0 runs=1 duration=181498010
>  CPU1   stopped monitoring
>  set0 runs=1 duration=181500829
>  results are on terminal
>  CPU0                     341291164 CPU_CLK_UNHALTED
>  CPU0                     507284317 DISPATCH_STALLS
>
>  As can be seen from the above verbose listing.
>  [PERFSEL0(pmc0)=0x530076 emask=0x76 umask=0x0 os=1 usr=1 inv=0 en=1
>  int=1 edge=0 cnt_mask=0] CPU_CLK_UNHALTED
>  [PERFCTR0(pmd0)]
>  [PERFSEL1(pmc1)=0x5300d1 emask=0xd1 umask=0x0 os=1 usr=1 inv=0 en=1
>
>  I am counting the events for both OS and user level. However, if you see
>  the aggregated output, the total number of cycles is less than the
>  dispatch stalls. How can a processor be stalled more than the time it is
>  executing.
>
>  I checked in detail trying to capture user and kernel level events
>  individually. For user level events DISPATCH_STALLS are always less than
>  the CPU_CLK_UNHALTED. But this is not the case for kernel level events.
>  I am wondering what I am doing wrong or is it a bug in perfmon.
>
>  Also note that DISPATCH_STALLS are very accurate when counting in
>  per-thread mode. In fact when I captured events which can contribute to
>  DISPATCH_STALLS in per thread mode, I got an error percentage of less
>  than 2-3 % (which was quite good). But this is not the case for
>  system-wide mode (where error percentage is as much as 40%).
>
>  Following are my machine specs (pfmon -I)
>
>  detected host CPUs:  2-way 1000MHz/0.5MB -- AMD Athlon(tm) 64 X2 Dual
>  Core Processor 4200+ (stepping 2)
>  detected PMU model: AMD64
>  max counters/set: 4
>  supported PMU models: [AMD64] [Pentium 4] [Intel Core] [Intel
>  architectural PMU]
>  supported sampling modules: [inst-hist] [detailed] [compact] [raw]
>  pfmlib version: 3.2
>  kernel perfmon version: 2.7
>
>  Thanks and Regards,
>  Pranav
>
>
>
>  -------------------------------------------------------------------------
>  Check out the new SourceForge.net Marketplace.
>  It's the best place to buy or sell services for
>  just about anything Open Source.
>  http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
>  _______________________________________________
>  perfmon2-devel mailing list
>  [email protected]
>  https://lists.sourceforge.net/lists/listinfo/perfmon2-devel
>

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
perfmon2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to