public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Ai Li" <aili@codeaurora.org>
To: '640E9920' <640e9920@gmail.com>, linux-pm@lists.linux-foundation.org
Subject: Re: PM-QOS hot path discussion.
Date: Tue, 26 Jan 2010 10:36:48 -0700	[thread overview]
Message-ID: <001501ca9eae$23c101b0$6b430510$@org> (raw)
In-Reply-To: <20091223172718.GB16543@mgross-laptop>

> Now what seems to be asked for is that something akin to the
> android WAKE_LOCK_IDLE "thing".
> 
> Last night I gave some thought to this.  One could put a boolean
> or bit mask flag into the aggregated value that when polled the
> poller could know to not go to any lower performing state or
> kick the system into higher performance states.  Setting the
> flag would only happen from kernel API's and no notification
> trees would be called as it gets toggled.  (that would kill fast
> path performance)

Android WAKE_LOCK_IDLE is a very coarse setting.  It does not take
advantage of the multiple performance states with their corresponding
latency values.  WAKE_LOCK_IDLE potentially disallows some low
performance states when their latencies may be quite acceptable.  In
contrast, an integer setting would allow a better match between the
requested latency value and the appropriate low power states.  pm_qos
already provides the integer setting.  IMO, the question is how to
enable hot-path flow through pm_qos...


> But as I thought about it it became clear the correct behavior
> is really a function of the parameter class.  If the parameter
> is cpu_dma_latency then the flag would be used to simply disable
> CPUIDLE from doing any high latency idle states.  However; such
> a flag for network bandwidth (a flag hit in some fast code path)
> shouldn't be telling the NIC to kick up from 100Mbs to 1000Mbs
> or go back.
> 
> So what would a fast path pm-qos parameter look like and how
> would it be used, outside of CPUIDLE?
> 

Stating it in another way: the correct hot path behavior for each
parameter class is dependent on what the parameter class is.  To
accommodate this, we could add a hot_path_fn in struct pm_qos_object.
It specifies the hot path behavior for the parameter class.  In the
hot path flow, update_target() will call
pm_qos_array[pm_qos_class]->hot_path_fn() instead of the notifier
chain.

With regards to NIC cards, I'm not sure what hot_path_fn() would
perform.  Maybe the default hot_path_fn for PM_QOS_NETWORK_THROUGHPUT
does nothing; the platform code or NIC card code can register a
different hot_path_fn.

~Ai

  reply	other threads:[~2010-01-26 17:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-23 17:27 PM-QOS hot path discussion 640E9920
2010-01-26 17:36 ` Ai Li [this message]
2010-01-27  2:00   ` Mike Chan
2010-01-27 19:08     ` Ai Li

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='001501ca9eae$23c101b0$6b430510$@org' \
    --to=aili@codeaurora.org \
    --cc=640e9920@gmail.com \
    --cc=linux-pm@lists.linux-foundation.org \
    /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