public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Bryan Huntsman <bryanh@codeaurora.org>
To: Mike Chan <mike@android.com>
Cc: linux-pm@lists.linux-foundation.org,
	mark gross <640e9920@gmail.com>,
	markgross@thegnar.org
Subject: Re: PM QoS dynamic resource manager
Date: Wed, 09 Jun 2010 18:22:39 -0700	[thread overview]
Message-ID: <4C103E5F.9060600@codeaurora.org> (raw)
In-Reply-To: <AANLkTimu7-8CZUbA2lNuYauZDoOuiBJI_v3cSIF9qqul@mail.gmail.com>

> Are you thinking of having a (possible) pm qos constraint for each
> struct device_driver? Or struct bus_type ? This would probably work if
> for something like i2c. I'm not sure how this would work for memory
> bus. If you did not want to tie memory bus performance to cpu speeds,
> since (at least from what I"ve seen in omap / msm / tegra) there's no
> device_driver for a memory bus clock, but I could be wrong so someone
> correct me if I'm mistaken.

I'm imagining QoS classes similar to pm_qos.  Bandwidth, cpu latency, 
etc.  Each driver decides what to do for each type, if anything.  This 
gets passed up the tree and aggregated by a parent, which I think would 
be a bus driver but could be anyone who cares.  The QoS sink, for lack 
of a better term, decides what it wants to do with that data.  For a 
memory bus, it would be possible to add up all bandwidth requests and 
scale the bus clock accordingly.  It could also look at the active 
status of it's children, decide that the bus is inactive, and completely 
shut it off.  This is where having arch-specific bus drivers is 
necessary.  What each QoS sink does will vary drastically from platform 
to platform, but the input data should be somewhat consistent.  That's 
why I'm looking into extending runtime_pm in this manner.

> Typically I've seen (on msm / tegra / omap) if cpu is running at
> frequency X, then set mem bus clock to Y. Which leads to a bunch of
> hacks with drivers requesting frequency X, when really they need the
> faster memory speed.

Picking the right QoS constraints will always be a problem.  It's 
possible to abuse pm_qos today in the same manner.

> Perhaps both per bus-type pm qos parameter as well as a new global
> memory bus (per cpu for numa systems?) parameter.
> 
> I'm worried about trying to over-engineer a solution here for
> non-existing (or non-interested) customers. Ideally something that
> will fit our needs with Android on msm / omap / tegra platforms but
> still flexible enough for non-SOC.
> 
> -- Mike

In general, I share your dislike for over-engineering.  This doesn't 
feel like that quite yet.  From a high level at least, it would seem to 
fit in nicely with runtime_pm.  From Mark's comments it sounds like 
others are having similar thoughts.

- Bryan

  reply	other threads:[~2010-06-10  1:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-21 21:37 PM QoS dynamic resource manager Chidambaram, Praveen
2010-05-25 14:52 ` mark gross
2010-05-25 16:19   ` Chidambaram, Praveen
2010-06-08  0:18   ` Mike Chan
2010-06-08  3:33     ` mark gross
2010-06-08 14:44       ` Chidambaram, Praveen
2010-06-09  2:55         ` mark gross
2010-06-08 18:58       ` Mike Chan
2010-06-08 23:03         ` Bryan Huntsman
2010-06-08 23:35           ` Mike Chan
2010-06-08 23:48             ` Bryan Huntsman
2010-06-09  3:05           ` mark gross
2010-06-10  0:53             ` Mike Chan
2010-06-10  1:22               ` Bryan Huntsman [this message]
2010-06-11 13:55               ` mark gross
2010-06-11 14:12             ` Kevin Hilman
2010-06-17 22:32               ` Kevin Hilman
2010-06-18  5:57                 ` Huntsman, Bryan
2010-06-22 23:34                   ` mark gross
2010-07-18 12:57                   ` mark gross
2010-07-18 15:03                     ` James Bottomley
2010-07-19  1:46                       ` Rafael J. Wysocki
2010-07-19  6:38                         ` James Bottomley
2010-07-19 13:50                           ` Matthew Garrett
2010-08-10 16:24                 ` Kevin Hilman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C103E5F.9060600@codeaurora.org \
    --to=bryanh@codeaurora.org \
    --cc=640e9920@gmail.com \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=markgross@thegnar.org \
    --cc=mike@android.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox