On Thu, Jul 14, 2016 at 08:53:17AM +0200, Thomas Gleixner wrote:
> > Happy to take suggestions for something in between those
> > extremes :-)
> 
> I'd suggest "resctrl" and the abbreviation dictionaries tell me that the most
> common ones for resource are: R, RESORC, RES

OK. "resctrl" it is.

> As a side effect that avoids the whole 'find all tasks' on mount machinery
> simply because the CPU defaults do not change at all.

That's a very good side effect.

It just means that the "tasks" file in the root of the hierachy will
need different read/write functions from those in sub-directories.

read: scan all tasks, print pid for ones with task->rdtgroup == NULL

write: remove task from the rdtgroup list that it was on; set task->rdtgroup = 
NULL;

> It covers almost everything except the case I outlined before:
> 
>    Isolated CPU                   Important Task runs on isolated CPU
>    5% exclusive cache     10% exclusive cache
> 
> That's impossible with your scheme, but it's something which matters. You want
> to make sure that the system services on that isolated CPU stay cache hot
> without hurting the cache locality of your isolated task.

So the core part of __intel_rdt_sched_in() will look like:

        /*
         * Precedence rules:
         * Processes assigned to an rdtgroup use that group
         * wherever they run. If they don't have an rdtgroup
         * we see if the current cpu has one and use it.
         * If no specific rdtgroup was provided, we use the
         * root_rdtgroup
         */
        rdtgrp = current->rdtgroup;
        if (!rdtgrp) {
                rdtgrp = per_cpu(cpu_rdtgroup, cpu);
                if (!rdtgrp)
                        rdtgrp = root_rdtgroup;
        }

> > Otherwise we can revise the documentation to explain all this better.
> 
> That needs to be done in any case. The existing one does not really qualify as
> proper documentation. It's closer to a fairy tale :)

Yes. We will re-write.

-Tony

Reply via email to