mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
refscale: Add a "jiffies" test
This commit adds a "jiffies" test to refscale, allowing use of jiffies to be compared to ktime_get_real_fast_ns(). On my x86 laptop, jiffies is more than 20x faster. (Though for many uses, the tens-of-nanoseconds overhead of ktime_get_real_fast_ns() will be just fine.) Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
f5063e8948
commit
b5a2801fc0
1 changed files with 33 additions and 1 deletions
|
@ -528,6 +528,38 @@ static struct ref_scale_ops clock_ops = {
|
||||||
.name = "clock"
|
.name = "clock"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void ref_jiffies_section(const int nloops)
|
||||||
|
{
|
||||||
|
u64 x = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
preempt_disable();
|
||||||
|
for (i = nloops; i >= 0; i--)
|
||||||
|
x += jiffies;
|
||||||
|
preempt_enable();
|
||||||
|
stopopts = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ref_jiffies_delay_section(const int nloops, const int udl, const int ndl)
|
||||||
|
{
|
||||||
|
u64 x = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
preempt_disable();
|
||||||
|
for (i = nloops; i >= 0; i--) {
|
||||||
|
x += jiffies;
|
||||||
|
un_delay(udl, ndl);
|
||||||
|
}
|
||||||
|
preempt_enable();
|
||||||
|
stopopts = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ref_scale_ops jiffies_ops = {
|
||||||
|
.readsection = ref_jiffies_section,
|
||||||
|
.delaysection = ref_jiffies_delay_section,
|
||||||
|
.name = "jiffies"
|
||||||
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Methods leveraging SLAB_TYPESAFE_BY_RCU.
|
// Methods leveraging SLAB_TYPESAFE_BY_RCU.
|
||||||
|
@ -1047,7 +1079,7 @@ ref_scale_init(void)
|
||||||
int firsterr = 0;
|
int firsterr = 0;
|
||||||
static struct ref_scale_ops *scale_ops[] = {
|
static struct ref_scale_ops *scale_ops[] = {
|
||||||
&rcu_ops, &srcu_ops, RCU_TRACE_OPS RCU_TASKS_OPS &refcnt_ops, &rwlock_ops,
|
&rcu_ops, &srcu_ops, RCU_TRACE_OPS RCU_TASKS_OPS &refcnt_ops, &rwlock_ops,
|
||||||
&rwsem_ops, &lock_ops, &lock_irq_ops, &acqrel_ops, &clock_ops,
|
&rwsem_ops, &lock_ops, &lock_irq_ops, &acqrel_ops, &clock_ops, &jiffies_ops,
|
||||||
&typesafe_ref_ops, &typesafe_lock_ops, &typesafe_seqlock_ops,
|
&typesafe_ref_ops, &typesafe_lock_ops, &typesafe_seqlock_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue