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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.