Re: [PATCH 10/17] 2.6.17.1 perfmon2 patch for review: PMU context switch

From: Stephane Eranian
Date: Tue Jul 04 2006 - 11:36:02 EST


Chuck,

On Sat, Jul 01, 2006 at 11:21:22AM -0400, Chuck Ebbert wrote:
> In-Reply-To: <20060630204032.GB22835@xxxxxxxxxxxxxxxxx>
>
> On Fri, 30 Jun 2006 13:40:32 -0700, Stephane Eranian wrote:
>
> > As Andi is suggesting, I think this may depends on how the BIOS implements
> > the low-power state. I have tried the same command on my dual Opteron 250
> > 2.4GHz and I get:
> > $ pfmon --us-c -ecpu_clk_unhalted,interrupts_masked_cycles -k --system-wide -t 10
> > <session to end in 10 seconds>
> > CPU0 9,520,303 CPU_CLK_UNHALTED
> > CPU0 3,726,315 INTERRUPTS_MASKED_CYCLES
> > CPU1 21,268,151 CPU_CLK_UNHALTED
> > CPU1 14,515,389 INTERRUPTS_MASKED_CYCLES
>
> That is similar to what I get with idle=halt. Are you not using ACPI
> for idle?
>
> Try this:
>
> $ pfmon -ecpu_clk_unhalted,interrupts_masked_cycles_with_interrupt_pending,interrupts_masked_cycles,cycles_no_fpu_ops_retired -k --system-wide -t 10
> <session to end in 10 seconds>
> CPU0 95016828 CPU_CLK_UNHALTED
> CPU0 36472783 INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING
> CPU0 67484408 INTERRUPTS_MASKED_CYCLES
> CPU0 445326968 CYCLES_NO_FPU_OPS_RETIRED
>
> That's what I get with idle=halt. Since the kernel doesn't do FP
> the last line should equal clock cycles. If it were running at full
> speed it would be 16 billion...

Here is what I get on my dual 2.4GHz Opteron 250:

booted with idle=halt
$ pfmon --us-c -ecpu_clk_unhalted,interrupts_masked_cycles_with_interrupt_pending,interrupts_masked_cycles,cycles_no_fpu_ops_retired -k --system-wide -t 10
<session to end in 10 seconds>
CPU0 11,356,210 CPU_CLK_UNHALTED
CPU0 0 INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING
CPU0 3,836,107 INTERRUPTS_MASKED_CYCLES
CPU0 23,910,784,532 CYCLES_NO_FPU_OPS_RETIRED
CPU1 19,303,632 CPU_CLK_UNHALTED
CPU1 0 INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING
CPU1 13,942,265 INTERRUPTS_MASKED_CYCLES
CPU1 23,911,872,654 CYCLES_NO_FPU_OPS_RETIRED

As you can see, CYCLES_NO_FPU_OPS_RETIRED on each CPU is as expected for 10s.

booted with idle=poll
$ pfmon --us-c -ecpu_clk_unhalted,interrupts_masked_cycles_with_interrupt_pending,interrupts_masked_cycles,cycles_no_fpu_ops_retired -k --system-wide -t 10
<session to end in 10 seconds>
CPU0 23,906,091,982 CPU_CLK_UNHALTED
CPU0 0 INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING
CPU0 3,771,569 INTERRUPTS_MASKED_CYCLES
CPU0 23,906,090,750 CYCLES_NO_FPU_OPS_RETIRED
CPU1 23,906,629,241 CPU_CLK_UNHALTED
CPU1 0 INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING
CPU1 14,805,078 INTERRUPTS_MASKED_CYCLES
CPU1 23,906,194,343 CYCLES_NO_FPU_OPS_RETIRED

CYCLES_NO_FPU_OPS_RETIRED is as expected and, in this case, it is equal to CPU_CLK_UNHALTED
because we are busy looping.

If I don't specify anything, I get like idle=halt which is expected.

--
-Stephane
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/