From: Anthony Liguori <aliguori@us.ibm.com>
To: xen-devel@lists.xensource.com
Subject: Re: [Xen-changelog] fail domU creation if memory need couldn't be succeed after ballooning out dom0
Date: Thu, 18 Aug 2005 09:35:56 -0500 [thread overview]
Message-ID: <43049CCC.3030205@us.ibm.com> (raw)
In-Reply-To: <E1E5gyR-0002hM-Mf@xenbits.xensource.com>
I don't mean to pick on this patch, but I've been chasing down a number
of race conditions in Xend that mostly seem to be rooted in the fact
that we do a lot of timeouts.
In general, we should try to avoid using timeouts at all cost. If we do
have to use a timeout, then we should make sure it's long enough that
the timeout is never going to happen. It's surprisingly easy to have
enough load on your system such you miss a 2 second timeout.
Getting rid of this timeout would be difficult so for now, we should at
least bump it to 30 or 60 seconds.
Thanks,
Anthony Liguori
Xen patchbot -unstable wrote:
>diff -r 02789fed726a -r a06430752462 tools/python/xen/xm/create.py
>--- a/tools/python/xen/xm/create.py Wed Aug 17 23:11:56 2005
>+++ b/tools/python/xen/xm/create.py Thu Aug 18 01:13:49 2005
>@@ -23,6 +23,7 @@
> import sys
> import socket
> import commands
>+import time
>
> import xen.lowlevel.xc
>
>@@ -674,18 +675,33 @@
> return 0
>
> def balloon_out(dom0_min_mem, opts):
>- """Balloon out to get memory for domU, if necessarily"""
>+ """Balloon out memory from dom0 if necessary"""
> SLACK = 4
>+ timeout = 20 # 2s
>+ ret = 0
>
> xc = xen.lowlevel.xc.new()
> pinfo = xc.physinfo()
>- free_mem = pinfo['free_pages']/256
>- if free_mem < opts.vals.memory + SLACK:
>- need_mem = opts.vals.memory + SLACK - free_mem
>- cur_alloc = get_dom0_alloc()
>- if cur_alloc - need_mem >= dom0_min_mem:
>- server.xend_domain_mem_target_set(0, cur_alloc - need_mem)
>+ free_mem = pinfo['free_pages'] / 256
>+ domU_need_mem = opts.vals.memory + SLACK
>+
>+ dom0_cur_alloc = get_dom0_alloc()
>+ dom0_new_alloc = dom0_cur_alloc - (domU_need_mem - free_mem)
>+
>+ if free_mem < domU_need_mem and dom0_new_alloc >= dom0_min_mem:
>+
>+ server.xend_domain_mem_target_set(0, dom0_new_alloc)
>+
>+ while dom0_cur_alloc > dom0_new_alloc and timeout > 0:
>+ time.sleep(0.1) # sleep 100ms
>+ dom0_cur_alloc = get_dom0_alloc()
>+ timeout -= 1
>+
>+ if dom0_cur_alloc > dom0_new_alloc:
>+ ret = 1
>+
> del xc
>+ return ret
>
> def main(argv):
> random.seed()
>@@ -717,7 +733,8 @@
> else:
> dom0_min_mem = xroot.get_dom0_min_mem()
> if dom0_min_mem != 0:
>- balloon_out(dom0_min_mem, opts)
>+ if balloon_out(dom0_min_mem, opts):
>+ return
>
> dom = make_domain(opts, config)
> if opts.vals.console_autoconnect:
>
>_______________________________________________
>Xen-changelog mailing list
>Xen-changelog@lists.xensource.com
>http://lists.xensource.com/xen-changelog
>
>
>
parent reply other threads:[~2005-08-18 14:35 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <E1E5gyR-0002hM-Mf@xenbits.xensource.com>]
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=43049CCC.3030205@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=xen-devel@lists.xensource.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.