RE: [1/4] ACPI C-States: accounting of sleep states

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



applied.
thanks,
-Len 

>-----Original Message-----
>From: [email protected] 
>[mailto:[email protected]] On Behalf Of 
>Dominik Brodowski
>Sent: Monday, June 19, 2006 5:29 PM
>To: Thomas Gleixner; Brown, Len
>Cc: Con Kolivas; Ingo Molnar; LKML; Andrew Morton; john stultz
>Subject: [1/4] ACPI C-States: accounting of sleep states
>
>Track the actual time spent in C-States (C2 upwards, we can't
>determine this for C1), not only the number of invocations. This is
>especially useful for dynamic ticks / "tickless systems", but is also
>of interest on normal systems, as any interrupt activity leads to
>C-States being exited, not only the timer interrupt.
>
>The time is being measured in PM timer ticks, so an increase 
>by one equals
>279 nanoseconds.
>
>Signed-off-by: Dominik Brodowski <[email protected]>
>
>---
>
> drivers/acpi/processor_idle.c |   10 ++++++----
> include/acpi/processor.h      |    1 +
> 2 files changed, 7 insertions(+), 4 deletions(-)
>
>3997a08ff5aa0553dfff81801c3690a5c91ac7bc
>diff --git a/drivers/acpi/processor_idle.c 
>b/drivers/acpi/processor_idle.c
>index 80fa434..4f166fa 100644
>--- a/drivers/acpi/processor_idle.c
>+++ b/drivers/acpi/processor_idle.c
>@@ -322,8 +322,6 @@ static void acpi_processor_idle(void)
> 		cx = &pr->power.states[ACPI_STATE_C1];
> #endif
> 
>-	cx->usage++;
>-
> 	/*
> 	 * Sleep:
> 	 * ------
>@@ -421,6 +419,9 @@ static void acpi_processor_idle(void)
> 		local_irq_enable();
> 		return;
> 	}
>+	cx->usage++;
>+	if ((cx->type != ACPI_STATE_C1) && (sleep_ticks > 0))
>+		cx->time += sleep_ticks;
> 
> 	next_state = pr->power.state;
> 
>@@ -1055,9 +1056,10 @@ static int acpi_processor_power_seq_show
> 		else
> 			seq_puts(seq, "demotion[--] ");
> 
>-		seq_printf(seq, "latency[%03d] usage[%08d]\n",
>+		seq_printf(seq, "latency[%03d] usage[%08d] 
>duration[%020llu]\n",
> 			   pr->power.states[i].latency,
>-			   pr->power.states[i].usage);
>+			   pr->power.states[i].usage,
>+			   pr->power.states[i].time);
> 	}
> 
>       end:
>diff --git a/include/acpi/processor.h b/include/acpi/processor.h
>index badf027..ca0e031 100644
>--- a/include/acpi/processor.h
>+++ b/include/acpi/processor.h
>@@ -51,6 +51,7 @@ struct acpi_processor_cx {
> 	u32 latency_ticks;
> 	u32 power;
> 	u32 usage;
>+	u64 time;
> 	struct acpi_processor_cx_policy promotion;
> 	struct acpi_processor_cx_policy demotion;
> };
>-- 
>1.2.4
>
>-
>To unsubscribe from this list: send the line "unsubscribe 
>linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux