xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Zhenzhong Duan <zhenzhong.duan@oracle.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Konrad Rzeszutek Wilk <konrad@kernel.org>,
	Dan Magenheimer <dan.magenheimer@oracle.com>,
	Feng Jin <joe.jin@oracle.com>,
	xen-devel <xen-devel@lists.xen.org>
Subject: Re: an issue with 'xm save'
Date: Fri, 28 Sep 2012 18:34:51 +0800	[thread overview]
Message-ID: <50657D4B.9040303@oracle.com> (raw)
In-Reply-To: <20120927115918.GE8832@phenom.dumpdata.com>

On 2012-09-27 19:59, Konrad Rzeszutek Wilk wrote:
> On Thu, Sep 27, 2012 at 01:58:19PM +0800, Zhenzhong Duan wrote:
>>
>> On 2012-09-26 20:35, Konrad Rzeszutek Wilk wrote:
>>> On Wed, Sep 26, 2012 at 04:48:42PM +0800, Zhenzhong Duan wrote:
>>>> Konrad Rzeszutek Wilk wrote:
>>>>> On Fri, Sep 21, 2012 at 05:41:27PM +0800, Zhenzhong Duan wrote:
>>>>>> Hi maintainers,
>>>>>>
>>>>>> I found there is an issue when 'xm save' a pvm guest. See below:
>>>>>>
>>>>>> When I do save then restore once, CPU(%) in xentop showed around 99%.
>>>>>> When I do that second time, CPU(%) showed 199%
>>>>>>
>>>>>> top in dom0 showed:
>>>>>>      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
>>>>>>     20946 root      18  -2 10984 1284  964 S 19.8  0.3   0:48.93 block
>>>>>>     4939 root      18  -2 10984 1288  964 S 19.5  0.3   1:34.68 block
>>>>>>
>>>>>> I could kill the block process, then all look normal again.
>>>>> What is the 'block' process? If you attach 'perf' to it do you get an idea
>>>>> of what it is spinning at?
>>>> It's /etc/xen/scripts/block
>>>> I add 'set -x' to /etc/xen/scripts/block, found it blocked at claim_lock.
>>>> When domU was created first time, claim_lock/release_lock finished quickly,
>>>> when 'xm save' was called, claim_lock spin in its own while loop.
>>>> I can ensure no other domU create/save/etc happen when I test.
>>> OK, so how come you have two block processes? Is it b/c you have two
>>> disks attached to the guest? The are multiple claim_lock in the shell
>>> script - do you know where each of two threads are spinning? Are they
>>> spinning on the same function?
>> In above test, I run save/restore twice, so two block processes.
>> In other test, run save/restore once, there is only one block process.
>> After do 'xm save', I see block process spin at line 328:
>> 321   remove)
>> 322     case $t in
>> 323       phy)
>> 324         exit 0
>> 325         ;;
>> 326
>> 327       file)
>> 328         claim_lock "block"
>> 329         node=$(xenstore_read "$XENBUS_PATH/node")
>> 330         losetup -d "$node"
>> 331         release_lock "block"
>> 332         exit 0
>> 333         ;;
> So with the patches in OVM - do they have this fixed? Can they be upstreamed
> or are the dependent on some magic OVM sauce?
After replace locking.sh with OVM's, it worked.
But xen-tools evolved to use flock based locking currently. We can't 
revert back.
It seems changeset 25595:497e2fe49455 bring the issue.
Finally, I came with a small patch that workaround the issue.

diff -r d364becfb083 tools/hotplug/Linux/locking.sh
--- a/tools/hotplug/Linux/locking.sh    Thu Sep 20 13:31:19 2012 +0200
+++ b/tools/hotplug/Linux/locking.sh    Fri Sep 28 18:27:31 2012 +0800
@@ -66,6 +66,7 @@
  release_lock()
  {
      _setlockfd $1
+    flock -u $_lockfd
      rm "$_lockfile"
  }

  reply	other threads:[~2012-09-28 10:34 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-21  9:41 an issue with 'xm save' Zhenzhong Duan
2012-09-21 14:34 ` Konrad Rzeszutek Wilk
2012-09-26  8:48   ` Zhenzhong Duan
2012-09-26 12:35     ` Konrad Rzeszutek Wilk
2012-09-27  5:58       ` Zhenzhong Duan
2012-09-27 11:59         ` Konrad Rzeszutek Wilk
2012-09-28 10:34           ` Zhenzhong Duan [this message]
2012-09-28 14:01             ` Is: Contention in block script when doing guest saving. Was:Re: " Konrad Rzeszutek Wilk
2012-09-28 14:14               ` Ian Jackson
2012-09-28 14:46                 ` Zhenzhong Duan
2012-10-02 14:59                   ` Ian Jackson
2012-10-09  8:53                     ` DuanZhenzhong

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=50657D4B.9040303@oracle.com \
    --to=zhenzhong.duan@oracle.com \
    --cc=dan.magenheimer@oracle.com \
    --cc=joe.jin@oracle.com \
    --cc=konrad.wilk@oracle.com \
    --cc=konrad@kernel.org \
    --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).