mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
rcu: Add event-trace markers to TREE_RCU kthreads
Add event-trace markers to TREE_RCU kthreads to allow including these kthread's CPU time in the utilization calculations. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
eab0993c7b
commit
385680a948
2 changed files with 15 additions and 0 deletions
|
@ -13,6 +13,9 @@
|
||||||
* "Start <activity>" -- Mark the start of the specified activity,
|
* "Start <activity>" -- Mark the start of the specified activity,
|
||||||
* such as "context switch". Nesting is permitted.
|
* such as "context switch". Nesting is permitted.
|
||||||
* "End <activity>" -- Mark the end of the specified activity.
|
* "End <activity>" -- Mark the end of the specified activity.
|
||||||
|
*
|
||||||
|
* An "@" character within "<activity>" is a comment character: Data
|
||||||
|
* reduction scripts will ignore the "@" and the remainder of the line.
|
||||||
*/
|
*/
|
||||||
TRACE_EVENT(rcu_utilization,
|
TRACE_EVENT(rcu_utilization,
|
||||||
|
|
||||||
|
|
|
@ -1219,9 +1219,12 @@ static int rcu_boost_kthread(void *arg)
|
||||||
int spincnt = 0;
|
int spincnt = 0;
|
||||||
int more2boost;
|
int more2boost;
|
||||||
|
|
||||||
|
trace_rcu_utilization("Start boost kthread@init");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
rnp->boost_kthread_status = RCU_KTHREAD_WAITING;
|
rnp->boost_kthread_status = RCU_KTHREAD_WAITING;
|
||||||
|
trace_rcu_utilization("End boost kthread@rcu_wait");
|
||||||
rcu_wait(rnp->boost_tasks || rnp->exp_tasks);
|
rcu_wait(rnp->boost_tasks || rnp->exp_tasks);
|
||||||
|
trace_rcu_utilization("Start boost kthread@rcu_wait");
|
||||||
rnp->boost_kthread_status = RCU_KTHREAD_RUNNING;
|
rnp->boost_kthread_status = RCU_KTHREAD_RUNNING;
|
||||||
more2boost = rcu_boost(rnp);
|
more2boost = rcu_boost(rnp);
|
||||||
if (more2boost)
|
if (more2boost)
|
||||||
|
@ -1229,11 +1232,14 @@ static int rcu_boost_kthread(void *arg)
|
||||||
else
|
else
|
||||||
spincnt = 0;
|
spincnt = 0;
|
||||||
if (spincnt > 10) {
|
if (spincnt > 10) {
|
||||||
|
trace_rcu_utilization("End boost kthread@rcu_yield");
|
||||||
rcu_yield(rcu_boost_kthread_timer, (unsigned long)rnp);
|
rcu_yield(rcu_boost_kthread_timer, (unsigned long)rnp);
|
||||||
|
trace_rcu_utilization("Start boost kthread@rcu_yield");
|
||||||
spincnt = 0;
|
spincnt = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
|
trace_rcu_utilization("End boost kthread@notreached");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1490,9 +1496,12 @@ static int rcu_cpu_kthread(void *arg)
|
||||||
char work;
|
char work;
|
||||||
char *workp = &per_cpu(rcu_cpu_has_work, cpu);
|
char *workp = &per_cpu(rcu_cpu_has_work, cpu);
|
||||||
|
|
||||||
|
trace_rcu_utilization("Start CPU kthread@init");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
*statusp = RCU_KTHREAD_WAITING;
|
*statusp = RCU_KTHREAD_WAITING;
|
||||||
|
trace_rcu_utilization("End CPU kthread@rcu_wait");
|
||||||
rcu_wait(*workp != 0 || kthread_should_stop());
|
rcu_wait(*workp != 0 || kthread_should_stop());
|
||||||
|
trace_rcu_utilization("Start CPU kthread@rcu_wait");
|
||||||
local_bh_disable();
|
local_bh_disable();
|
||||||
if (rcu_cpu_kthread_should_stop(cpu)) {
|
if (rcu_cpu_kthread_should_stop(cpu)) {
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
|
@ -1513,11 +1522,14 @@ static int rcu_cpu_kthread(void *arg)
|
||||||
spincnt = 0;
|
spincnt = 0;
|
||||||
if (spincnt > 10) {
|
if (spincnt > 10) {
|
||||||
*statusp = RCU_KTHREAD_YIELDING;
|
*statusp = RCU_KTHREAD_YIELDING;
|
||||||
|
trace_rcu_utilization("End CPU kthread@rcu_yield");
|
||||||
rcu_yield(rcu_cpu_kthread_timer, (unsigned long)cpu);
|
rcu_yield(rcu_cpu_kthread_timer, (unsigned long)cpu);
|
||||||
|
trace_rcu_utilization("Start CPU kthread@rcu_yield");
|
||||||
spincnt = 0;
|
spincnt = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*statusp = RCU_KTHREAD_STOPPED;
|
*statusp = RCU_KTHREAD_STOPPED;
|
||||||
|
trace_rcu_utilization("End CPU kthread@term");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue