All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dario Faggioli <dario.faggioli@citrix.com>
To: Meng Xu <mengxu@cis.upenn.edu>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wei.liu2@citrix.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>,
	Haoran Li <lihaoran@wustl.edu>,
	Linh Thi Xuan Phan <linhphan@cis.upenn.edu>,
	Meng Xu <xumengpanda@gmail.com>,
	Dagaen Golomb <dgolomb@seas.upenn.edu>
Subject: Re: [PATCH] xen:rtds:fix bug in accounting budget
Date: Fri, 21 Oct 2016 19:36:22 +0200	[thread overview]
Message-ID: <1477071382.24930.153.camel@citrix.com> (raw)
In-Reply-To: <1476890041-4248-1-git-send-email-mengxu@cis.upenn.edu>


[-- Attachment #1.1: Type: text/plain, Size: 3136 bytes --]

On Wed, 2016-10-19 at 11:13 -0400, Meng Xu wrote:
> The bug is introduced in Xen 4.7 when we converted RTDS scheduler
> from quantum-driven model to event-driven model.
> We assumed rt_schedule() is always called for a VCPU
> before the VCPUs budget replenished handler.
>
No, we didn't.

Or at least, I've never done so, and tried as hard as I could to tell
you guys to not make any assumptions on who run first.

So, yes, I agree that, if there is code that only works under such
assumption, it's a bug.

> This assumption does not hold, when system is overloaded, or
> when the VCPU budget is almost equal its period.
> 
> Buggy behavior:
> 1) A VCPU may get less budget that assigned in a period.
> 2) A full capacity VCPU, i.e., a VCPU whose period is equal to
> budget,
>    may not get any budget in some period.
> 
So, there are two bugs. And things are very subtle, as far as I can
judge from both the bugs description and the code.

It would be, therefore, a lot more clear if you could send _one_ patch
per bug.

> Bug analysis:
> 1) A VCPU deadline can be fast-forwarded by more than one period.
>    However, the VCPU last_start time was not updated immediately.
>    If rt_schedule() is called after rt_update_deadline(), which
> happens
>    when VCPU budget is equal to period or when VCPU has deadline
> miss,
>    burn_budget() will burn the budget that was just replenished,
>    although the replenished budget should be used in the most recent
> period only.
> 
-EPARSE.

I've looked at the code and try to match current behavior, your
proposed change, and this description, but failed.

Can you be a little more precise and specific about what happens when?

I'll keep looking and thinking, but any help in making all this a bit
more clear would be very welcome.

> 2) When a full capacity VCPU depletes its budget and is context
> switching out,
>    but has not updated the cores current running VCPU,
>
"has not updated the cores current running VCPU,"

I've not idea what this sentence means. What is it that has not yet
been updated?

>    the budget replenish timer may be triggerred.
>    The replenish handler failed to re-schedule the full capacity VCPU
>    because it thought the VCPU is running.
> 
>    When a VCPU budget is replenished, we try to tickle a CPU.
>    When we find a core for a VCPU to tickle and the VCPU is context
> switching out,
>    we will always tickle the core where the VCPU was running,
>    if the VCPU cannot find another core to tickle
> 
Can't understand much again... I guess this is the description of the
solution to the bug?

> This bug was reported by Dagaen Golomb
> 
You can give credit by using the following tag:

Reported by: Dagaen Golomb <xxx@yyy.zz>

Thanks and Regards,
Dario
-- 
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 127 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  parent reply	other threads:[~2016-10-21 17:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-19 15:13 [PATCH] xen:rtds:fix bug in accounting budget Meng Xu
2016-10-19 15:30 ` Meng Xu
2016-10-19 15:45 ` Wei Liu
2016-10-19 15:55   ` Meng Xu
2016-10-21 17:36 ` Dario Faggioli [this message]
2016-10-21 20:58   ` Meng Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1477071382.24930.153.camel@citrix.com \
    --to=dario.faggioli@citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=dgolomb@seas.upenn.edu \
    --cc=lihaoran@wustl.edu \
    --cc=linhphan@cis.upenn.edu \
    --cc=mengxu@cis.upenn.edu \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xumengpanda@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.