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
next prev parent 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