WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-bugs

[Xen-bugs] [Bug 743] Unable to start more than a few domU's on RHEL4 amd

To: xen-bugs@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-bugs] [Bug 743] Unable to start more than a few domU's on RHEL4 amd64 (Error: Backend device not found)
From: bugzilla-daemon@xxxxxxxxxxxxxxxxxxx
Date: Tue, 29 Aug 2006 10:53:07 -0700
Delivery-date: Tue, 29 Aug 2006 10:54:02 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <bug-743-3@xxxxxxxxxxxxxxxxxxxxxxxxxxx/bugzilla/>
List-help: <mailto:xen-bugs-request@lists.xensource.com?subject=help>
List-id: Xen Bugzilla <xen-bugs.lists.xensource.com>
List-post: <mailto:xen-bugs@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-bugs>, <mailto:xen-bugs-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-bugs>, <mailto:xen-bugs-request@lists.xensource.com?subject=unsubscribe>
Reply-to: bugs@xxxxxxxxxxxxxxxxxx
Sender: xen-bugs-bounces@xxxxxxxxxxxxxxxxxxx
http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=743





------- Comment #19 from andrew.warfield@xxxxxxxxxxxx  2006-08-29 10:53 -------
Subject: Re:  Unable to start more than a few domU's on RHEL4 amd64 (Error:
Backend device not found)

Good catch, looks like you are actually failing on the system-wide
limit test further down in ioctx_alloc:

        /* limit the number of system wide aios */
        spin_lock(&aio_nr_lock);
        if (aio_nr + ctx->max_reqs > aio_max_nr ||
            aio_nr + ctx->max_reqs < aio_nr)
                ctx->max_reqs = 0;
        else
                aio_nr += ctx->max_reqs;
        spin_unlock(&aio_nr_lock);
        if (ctx->max_reqs == 0)
                goto out_cleanup;

...out_cleanup also returns -EAGAIN.  This seems like a bit of a
weakness in aio -- one process can pretty easily deny service to
others with this limit.  As an interim fix, try:

echo 1048576 > /proc/sys/fs/aio-max-nr

which should let you use 60 disks. I'll look into a better solution. ;)

a.

On 8/29/06, bugzilla-daemon@xxxxxxxxxxxxxxxxxxx
<bugzilla-daemon@xxxxxxxxxxxxxxxxxxx> wrote:
> http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=743
>
>
>
>
>
> ------- Comment #18 from tejasvia@xxxxxxxxx  2006-08-29 10:29 -------
> io_setup() during the failure is returning -11  (EAGAIN -
> include/asm-generic/errno-base.h), and tdaio_open()#tools/drivers/block-aio.c
> is considering any non-zero return code to be non-existing support, and that 
> is
> why the aio-poll support error msg appears!
>
> The man page for io_setup() indicates that EAGAIN is returned when "The
> specified nr_events exceeds the user's limit of available events"
>
> Digging into the kernel code (havent instrumented it, yet), it appears that
> ioctx_alloc is failing with EAGAIN (going by the reason mentioned on the
> manpage for EAGAIN)
>
> sys_io_setup(..) #fs/aio.c
> {
>
>         ioctx = ioctx_alloc(nr_events);
>         ret = PTR_ERR(ioctx);
>         if (!IS_ERR(ioctx)) {
>                 ret = put_user(ioctx->user_id, ctxp);
>          ...
>
> }
>
> kioctx *ioctx_alloc(unsigned nr_events) #fs/aio.c
> {
> ....
> ...
>         if ((unsigned long)nr_events > aio_max_nr)
>                 return ERR_PTR(-EAGAIN);
> ...
>
> }
>
> &&
>
> unsigned long aio_max_nr = 0x10000; /* system wide maximum number of aio
> requests */
>
> unless it is changed elsewhere.
>
> and in the user space tool,
>
> tdaio_open() #tools/blktap/drivers/block-aio.c
> {
> ...
>
>         prv->aio_ctx = (io_context_t) REQUEST_ASYNC_FD;
>         prv->poll_fd = io_setup(MAX_AIO_REQS, &prv->aio_ctx);
>
>         if (prv->poll_fd < 0) {
>                 ret = prv->poll_fd;
>                 DPRINTF("Couldn't get fd for AIO poll support.  This is "
>                         "probably because your kernel does not have the "
>                         "aio-poll patch applied.\n");
>                 goto done;
>         }
> ...
> ...
> }
>
> #define MAX_AIO_REQS (MAX_REQUESTS * MAX_SEGMENTS_PER_REQ * 8)
>
> == 64*11*8 = 5632 (0x1600)
>
> and in my case REQUEST_AYSNC_FD == 1 (block-aio)
>
>
> --
> Configure bugmail: 
> http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug, or are watching someone who is.
>


-- 
Configure bugmail: 
http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

_______________________________________________
Xen-bugs mailing list
Xen-bugs@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-bugs

<Prev in Thread] Current Thread [Next in Thread>