Re: [PATCH v2] power: new trace event to print device suspend and resume time

From: Rafael J. Wysocki
Date: Wed Jul 17 2013 - 17:43:23 EST


On Wednesday, July 17, 2013 09:41:08 AM Joe Perches wrote:
> On Wed, 2013-07-17 at 16:30 +0000, Shuah Khan wrote:
> > On 07/17/2013 10:09 AM, Joe Perches wrote:
> > > On Wed, 2013-07-17 at 09:57 -0600, Shuah Khan wrote:
> > >> A new trace event is added to pm events to print time it takes to suspend and
> > >> resume a device. It generates trace message that includes device, driver,
> > >> parent information in addition to the type of pm ops invoked as well as the
> > >> pm event and error status from the pm ops. Example trace below:
> > >>
> > >> bash-2484 [001] .... 907.330148: device_pm_report_time: backlight acpi_video0 parent=0000:00:02.0 state=freeze ops=class usecs=0 err=0
> > >>
> > >> bash-2484 [001] .... 909.906743: device_pm_report_time: backlight acpi_video0 parent=0000:00:02.0 state=restore ops=class usecs=0 err=0
> []
> > > Given the data is in nsecs, why use usecs for the time?
> > > I think full resolution would be better.
> >
> > My intent to was to match the time units to the original pm_print_times.
>
> I don't think that maintaining consistency is
> useful in a new facility when you lose precision.
>
> Also the accuracy is suspect as it's calculated with
> >>10 rather than an actual divide by 1000.

It's because that is way faster and we don't need great precision here.

> > Rafael! Do you have any preference as to usecs vs. nsecs?

The numbers in microseconds are easier to read, but I guess we can just
use nanoseconds and then process the output.

Thanks,
Rafael


> > > Why are there two spaces after "ops=class"? One would be more normal.
>
> > This one is tough. The ops string that gets generated in conditionals in
> > __device_suspend() and device_resume() routines, has an extra space at
> > the end. I am not sure why that was done and the subsequent pr_* that
> > print that string also depend on that extra space at the end. I don't
> > have an easy way to fix it without changing lots of code where this
> > string is generated.
>
> I think the easiest way to "fix" it is to change
> the TP_printk format to:
>
> TP_printk("%s %s parent=%s state=%s ops=%susecs=%lld err=%d",
>
> > Hence, I chose to leave the extra space in. I also
> > didn't want to propagate that assumption that there is an extra space
> > into this new tracepoint.
>
> It's a big deal, it just seemed untidy.
>
> There are a couple of places in drivers/base/power/main.c
> where info is set to NULL. I didn't look hard to see if
> any of those are propagated through to this point, but
> there are uses of 'info ?: ""' for some of the logging
> messages. That _might_ an issue.
>
> It looks like all the other logging message uses of info
> have "%s%s" so that proper word spacing is done when
> info is "" or NULL.
>
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
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/