lkml.org 
[lkml]   [2020]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH -tip 22/32] sched: Split the cookie and setup per-task cookie on fork
On Tue, Dec 01, 2020 at 02:20:28PM -0500, Joel Fernandes wrote:
> On Wed, Nov 25, 2020 at 12:10:14PM +0100, Peter Zijlstra wrote:
> > On Tue, Nov 17, 2020 at 06:19:52PM -0500, Joel Fernandes (Google) wrote:
> > > +void sched_core_tag_requeue(struct task_struct *p, unsigned long cookie, bool group)
> > > +{
> > > + if (!p)
> > > + return;
> > > +
> > > + if (group)
> > > + p->core_group_cookie = cookie;
> > > + else
> > > + p->core_task_cookie = cookie;
> > > +
> > > + /* Use up half of the cookie's bits for task cookie and remaining for group cookie. */
> > > + p->core_cookie = (p->core_task_cookie <<
> > > + (sizeof(unsigned long) * 4)) + p->core_group_cookie;
> >
> > This seems dangerous; afaict there is nothing that prevents cookie
> > collision.
>
> This is fixed in a later patch by Josh "sched: Refactor core cookie into
> struct" where we are having independent fields for each type of cookie.

So I don't think that later patch is right... That is, it works, but
afaict it's massive overkill.

COOKIE_CMP_RETURN(task_cookie);
COOKIE_CMP_RETURN(group_cookie);
COOKIE_CMP_RETURN(color);

So if task_cookie matches, we consider group_cookie, if that matches we
consider color.

Now, afaict that's semantically exactly the same as just using the
narrowest cookie. That is, use the task cookie if there is, and then,
walking the cgroup hierarchy (up) pick the first cgroup cookie.

(I don't understand the color thing, but lets have that discussion in
that subthread)

Which means you only need a single active cookie field.

IOW, you're just making things complicated and expensive.


\
 
 \ /
  Last update: 2020-12-01 20:37    [W:0.122 / U:2.420 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site