Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1198832 > unrolled thread
| Started by | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| First post | 2015-08-03 15:00 +0200 |
| Last post | 2015-08-03 16:20 +0200 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 05/10] nohz: New tick dependency mask Peter Zijlstra <peterz@infradead.org> - 2015-08-03 15:00 +0200
Re: [PATCH 05/10] nohz: New tick dependency mask Frederic Weisbecker <fweisbec@gmail.com> - 2015-08-03 15:10 +0200
Re: [PATCH 05/10] nohz: New tick dependency mask Peter Zijlstra <peterz@infradead.org> - 2015-08-03 15:40 +0200
Re: [PATCH 05/10] nohz: New tick dependency mask Frederic Weisbecker <fweisbec@gmail.com> - 2015-08-03 16:00 +0200
Re: [PATCH 05/10] nohz: New tick dependency mask Peter Zijlstra <peterz@infradead.org> - 2015-08-03 16:20 +0200
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2015-08-03 15:00 +0200 |
| Subject | Re: [PATCH 05/10] nohz: New tick dependency mask |
| Message-ID | <pTnvr-3w4-3@gated-at.bofh.it> |
On Thu, Jul 23, 2015 at 06:42:10PM +0200, Frederic Weisbecker wrote:
> +void tick_nohz_set_tick_dependency(enum tick_dependency_bit bit)
> +{
> + unsigned long prev;
> +
> + prev = __tick_nohz_set_tick_dependency(bit, &tick_dependency);
> + if (!prev)
> + tick_nohz_full_kick_all();
> +}
> +void tick_nohz_set_tick_dependency_cpu(enum tick_dependency_bit bit, int cpu)
> +{
> + unsigned long prev;
> + struct tick_sched *ts;
> +
> + ts = per_cpu_ptr(&tick_cpu_sched, cpu);
> +
> + prev = __tick_nohz_set_tick_dependency(bit, &ts->tick_dependency);
> + if (!prev)
> + tick_nohz_full_kick_cpu(cpu);
> +}
> +/*
> + * Local dependency must have its own flavour due to NMI-safe requirement
> + * on perf.
> + */
That doesn't make any sense:
tick_nohz_set_tick_dependency_this_cpu();
(shees, you're nowhere near lazy enough, that's insane to type) is
almost identical to:
tick_nohz_set_tick_dependency_cpu(.cpu = smp_processor_id());
The only difference is a _very_ slight reduction in cost for computing
the per-cpu offset.
> +void tick_nohz_set_tick_dependency_this_cpu(enum tick_dependency_bit bit)
> +{
> + unsigned long prev;
> + struct tick_sched *ts;
> +
> + ts = this_cpu_ptr(&tick_cpu_sched);
> +
> + prev = __tick_nohz_set_tick_dependency(bit, &ts->tick_dependency);
> + if (!prev)
> + tick_nohz_full_kick();
> +}
And on that naming; could we please shorten them, this is really
ridiculous, it has 'tick' in it twice.
What's wrong with:
tick_nohz_set_dep()
tick_nohz_set_dep_cpu()
And just kill the this_cpu() version.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Frederic Weisbecker <fweisbec@gmail.com> |
|---|---|
| Date | 2015-08-03 15:10 +0200 |
| Message-ID | <pTnF9-3WH-23@gated-at.bofh.it> |
| In reply to | #1198832 |
On Mon, Aug 03, 2015 at 02:57:17PM +0200, Peter Zijlstra wrote:
> On Thu, Jul 23, 2015 at 06:42:10PM +0200, Frederic Weisbecker wrote:
> > +void tick_nohz_set_tick_dependency(enum tick_dependency_bit bit)
> > +{
> > + unsigned long prev;
> > +
> > + prev = __tick_nohz_set_tick_dependency(bit, &tick_dependency);
> > + if (!prev)
> > + tick_nohz_full_kick_all();
> > +}
>
> > +void tick_nohz_set_tick_dependency_cpu(enum tick_dependency_bit bit, int cpu)
> > +{
> > + unsigned long prev;
> > + struct tick_sched *ts;
> > +
> > + ts = per_cpu_ptr(&tick_cpu_sched, cpu);
> > +
> > + prev = __tick_nohz_set_tick_dependency(bit, &ts->tick_dependency);
> > + if (!prev)
> > + tick_nohz_full_kick_cpu(cpu);
> > +}
>
> > +/*
> > + * Local dependency must have its own flavour due to NMI-safe requirement
> > + * on perf.
> > + */
>
> That doesn't make any sense:
>
> tick_nohz_set_tick_dependency_this_cpu();
>
> (shees, you're nowhere near lazy enough, that's insane to type) is
> almost identical to:
>
> tick_nohz_set_tick_dependency_cpu(.cpu = smp_processor_id());
>
> The only difference is a _very_ slight reduction in cost for computing
> the per-cpu offset.
But the local one must be NMI-safe. Now I can do:
if (cpu == smp_processor_id())
tick_nohz_full_kick() // NMI-safe
else
tick_nohz_full_kick_cpu(cpu); // not NMI-safe.
>
> > +void tick_nohz_set_tick_dependency_this_cpu(enum tick_dependency_bit bit)
> > +{
> > + unsigned long prev;
> > + struct tick_sched *ts;
> > +
> > + ts = this_cpu_ptr(&tick_cpu_sched);
> > +
> > + prev = __tick_nohz_set_tick_dependency(bit, &ts->tick_dependency);
> > + if (!prev)
> > + tick_nohz_full_kick();
> > +}
>
>
> And on that naming; could we please shorten them, this is really
> ridiculous, it has 'tick' in it twice.
>
> What's wrong with:
>
> tick_nohz_set_dep()
> tick_nohz_set_dep_cpu()
Right.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2015-08-03 15:40 +0200 |
| Message-ID | <pTo8a-4v1-15@gated-at.bofh.it> |
| In reply to | #1198842 |
On Mon, Aug 03, 2015 at 03:09:39PM +0200, Frederic Weisbecker wrote: > > That doesn't make any sense: > > > > tick_nohz_set_tick_dependency_this_cpu(); > > > > (shees, you're nowhere near lazy enough, that's insane to type) is > > almost identical to: > > > > tick_nohz_set_tick_dependency_cpu(.cpu = smp_processor_id()); > > > > The only difference is a _very_ slight reduction in cost for computing > > the per-cpu offset. > > But the local one must be NMI-safe. Now I can do: > > if (cpu == smp_processor_id()) > tick_nohz_full_kick() // NMI-safe > else > tick_nohz_full_kick_cpu(cpu); // not NMI-safe. Urgh, I missed that. But yes, I suppose that's ok seeing how we result in a smaller interface. I was going to say that with a bit of luck GCC could optimize it, but its not inline so no it cannot. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Frederic Weisbecker <fweisbec@gmail.com> |
|---|---|
| Date | 2015-08-03 16:00 +0200 |
| Message-ID | <pTorw-4RW-3@gated-at.bofh.it> |
| In reply to | #1198854 |
On Mon, Aug 03, 2015 at 03:29:58PM +0200, Peter Zijlstra wrote: > On Mon, Aug 03, 2015 at 03:09:39PM +0200, Frederic Weisbecker wrote: > > > > That doesn't make any sense: > > > > > > tick_nohz_set_tick_dependency_this_cpu(); > > > > > > (shees, you're nowhere near lazy enough, that's insane to type) is > > > almost identical to: > > > > > > tick_nohz_set_tick_dependency_cpu(.cpu = smp_processor_id()); > > > > > > The only difference is a _very_ slight reduction in cost for computing > > > the per-cpu offset. > > > > But the local one must be NMI-safe. Now I can do: > > > > if (cpu == smp_processor_id()) > > tick_nohz_full_kick() // NMI-safe > > else > > tick_nohz_full_kick_cpu(cpu); // not NMI-safe. > > Urgh, I missed that. But yes, I suppose that's ok seeing how we result > in a smaller interface. > > I was going to say that with a bit of luck GCC could optimize it, but > its not inline so no it cannot. I might inline all these set_dep() things to introduce static keys on these APIs.. But the kick itself will remain real calls. Ok how about tick_nohz_set_dep_nmi() so that we know exactly what's the purpose here. Still a long function name but it's clear. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2015-08-03 16:20 +0200 |
| Message-ID | <pToKS-5tZ-11@gated-at.bofh.it> |
| In reply to | #1198863 |
On Mon, Aug 03, 2015 at 03:55:34PM +0200, Frederic Weisbecker wrote:
> On Mon, Aug 03, 2015 at 03:29:58PM +0200, Peter Zijlstra wrote:
> > On Mon, Aug 03, 2015 at 03:09:39PM +0200, Frederic Weisbecker wrote:
> >
> > > > That doesn't make any sense:
> > > >
> > > > tick_nohz_set_tick_dependency_this_cpu();
> > > >
> > > > (shees, you're nowhere near lazy enough, that's insane to type) is
> > > > almost identical to:
> > > >
> > > > tick_nohz_set_tick_dependency_cpu(.cpu = smp_processor_id());
> > > >
> > > > The only difference is a _very_ slight reduction in cost for computing
> > > > the per-cpu offset.
> > >
> > > But the local one must be NMI-safe. Now I can do:
> > >
> > > if (cpu == smp_processor_id())
> > > tick_nohz_full_kick() // NMI-safe
> > > else
> > > tick_nohz_full_kick_cpu(cpu); // not NMI-safe.
> >
> > Urgh, I missed that. But yes, I suppose that's ok seeing how we result
> > in a smaller interface.
> >
> > I was going to say that with a bit of luck GCC could optimize it, but
> > its not inline so no it cannot.
>
> I might inline all these set_dep() things to introduce static keys on these
> APIs.. But the kick itself will remain real calls.
Sure, but first check if GCC will optimize:
static inline void foo(int cpu)
{
if (cpu == smp_processor_id())
bar1();
else
bar2();
}
foo(smp_processor_id());
Into a direct call to bar1(), if not see if we can make it so. If not,
there's no point in inlining at all.
> Ok how about tick_nohz_set_dep_nmi() so that we know exactly what's the purpose
> here. Still a long function name but it's clear.
Only for the set, if you really care about it. The alternative is
WARN_ON(in_nmi() && cpu != smp_processor_id()) or somesuch.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web