From: Juergen Gross <jgross@suse.com>
To: Jan Beulich <JBeulich@suse.com>,
Dario Faggioli <dario.faggioli@citrix.com>
Cc: george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com,
dgdegra@tycho.nsa.gov, ian.jackson@eu.citrix.com,
xen-devel@lists.xen.org
Subject: Re: [PATCH] xen: add hypercall option to temporarily pin a vcpu
Date: Fri, 26 Feb 2016 13:49:30 +0100 [thread overview]
Message-ID: <56D049DA.60502@suse.com> (raw)
In-Reply-To: <56D0559C02000078000D6AFE@suse.com>
On 26/02/16 13:39, Jan Beulich wrote:
>>>> On 26.02.16 at 12:20, <dario.faggioli@citrix.com> wrote:
>> On Fri, 2016-02-26 at 12:14 +0100, Juergen Gross wrote:
>>> On 26/02/16 11:39, Jan Beulich wrote:
>>>>
>>>>> @@ -670,7 +676,13 @@ int cpu_disable_scheduler(unsigned int cpu)
>>>>> if ( cpumask_empty(&online_affinity) &&
>>>>> cpumask_test_cpu(cpu, v->cpu_hard_affinity) )
>>>>> {
>>>>> - printk(XENLOG_DEBUG "Breaking affinity for
>>>>> %pv\n", v);
>>>>> + if ( v->affinity_broken )
>>>>> + {
>>>>> + /* The vcpu is temporarily pinned, can't
>>>>> move it. */
>>>>> + vcpu_schedule_unlock_irqrestore(lock, flags,
>>>>> v);
>>>>> + ret = -EBUSY;
>>>>> + continue;
>>>>> + }
>>>> So far the function can only return 0 or -EAGAIN. By using
>>>> "continue"
>>>> here you will make it impossible for the caller to reliably
>>>> determine
>>>> whether possibly both things failed. Despite -EBUSY being a logical
>>>> choice here, I think you'd better use -EAGAIN here too. And it
>>>> needs
>>>> to be determined whether continuing the loop in this as well as the
>>>> pre-existing cases is actually the right thing to do.
>>> EBUSY vs. EAGAIN: by returning EAGAIN I would signal to Xen tools
>>> that
>>> the hypervisor is currently not able to do the desired operation
>>> (especially removing a cpu from a cpupool), but the situation will
>>> change automatically via scheduling. EBUSY will stop retries in Xen
>>> tools and this is want I want here: I can't be sure the situation
>>> will change soon.
>>>
>> I agree with this.
>
> I'm of two minds here: I can see your viewpoint, but considering
> this is called "temporarily pin a vcpu" the condition is supposed to
> be going away again soon.
It is supposed to do so, yes. But the hypervisor can't make sure it
will, as it requires an appropriate hypercall by the hardware domain.
In the cpupool case no domain is capable to make the situation
persist.
Would you be fine with adding a tools patch doing a limited number
of retries in the EBUSY case (maybe with sleeping 1 second in that
case)?
>
>>> Regarding continuation of the loop: I think you are right in the
>>> EBUSY case: I should break out of the loop. I should not do so in the
>>> EAGAIN case as I want to remove as many vcpus from the physical cpu
>>> as
>>> possible without returning to the Xen tools in between.
>>>
>> And with this too.
>>
>> And I think that, if we indeed break out of the loop on EBUSY, that
>> will also make it possible to figure out properly what actually went
>> wrong, so it should be fine from that point of view as well.
>
> Yes indeed.
>
>>>>> @@ -679,6 +691,8 @@ int cpu_disable_scheduler(unsigned int cpu)
>>>>> v->affinity_broken = 1;
>>>>> }
>>>>>
>>>>> + printk(XENLOG_DEBUG "Breaking affinity for
>>>>> %pv\n", v);
>>>> Wouldn't it be even better to make this the "else" to the
>>>> preceding if(), since in the suspend case this is otherwise going
>>>> to be printed for every vCPU not currently running on pCPU0?
>>> Yes, I'll change it.
>>>
>> On this, can (either of) you elaborate a bit more? I don't think I'm
>> following...
>
> In addition to Jürgen's reply: My main concern here is that on
> a bug system this message would get printed for almost every
> vCPU in the system, which could end up being a lot of noise.
>
> And there's a similar message on the resume side I think -
> perhaps that one should be silenced too.
Okay. I'll do the silencing (both cases) in an extra patch.
Juergen
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-02-26 12:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 16:50 [PATCH] xen: add hypercall option to temporarily pin a vcpu Juergen Gross
2016-02-26 10:39 ` Jan Beulich
[not found] ` <56D0395702000078000D69A6@suse.com>
2016-02-26 11:14 ` Juergen Gross
2016-02-26 11:20 ` Dario Faggioli
2016-02-26 11:43 ` Juergen Gross
2016-02-26 12:39 ` Jan Beulich
2016-02-26 13:07 ` Dario Faggioli
2016-02-26 13:32 ` Jan Beulich
2016-02-26 13:39 ` Dario Faggioli
[not found] ` <56D0559C02000078000D6AFE@suse.com>
2016-02-26 12:49 ` Juergen Gross [this message]
2016-02-26 13:34 ` Jan Beulich
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=56D049DA.60502@suse.com \
--to=jgross@suse.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=dario.faggioli@citrix.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=george.dunlap@eu.citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).