> On Mar 3, 2018, at 7:26 AM, Peter Zijlstra <pet...@infradead.org> wrote:
> On Thu, Mar 01, 2018 at 11:53:21AM -0800, Song Liu wrote:
>> Second, flexible_groups in cpuctx->ctx and cpuctx->task_ctx now have
>> exact same priority and equal chance to run. I am not sure whether this
>> will change the behavior in some use cases.
>> Please kindly let me know whether this approach makes sense.
> What you've not said is, and what is not at all clear, is if your scheme
> preserved fairness.
> In any case, there's a ton of conflict against the patches here:
> And with those the idea was to move to a virtual time based scheduler
> (basically schedule those flexible events that have the biggest lag --
> that also solves 1).
While looking at these patches, I found it might not solve issue #1
(cpuctx->task_ctx->flexible_groups starvation). Here is an example on Intel
CPU (where ref-cycle can only use one hardware counter):
First, in one console start:
perf stat -e ref-cycles -I 10000
Second, in another console run:
perf stat -e ref-cycles -- benchmark
The second event will not run because the first event occupies the counter
all the time.
Maybe we can solve this by combining the two flexible_groups (cpuctx->ctx,
and cpuctx->task_ctx), and rotate them together? If this sounds reasonable,
I would draft a RFC for it.