All of lore.kernel.org
 help / color / mirror / Atom feed
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
>
>  
>

           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.