From: Steven Whitehouse <steve@gw.chygwyn.com>
To: ptb@it.uc3m.es
Cc: linux-kernel@vger.kernel.org (linux kernel),
alan@lxorguk.ukuu.org.uk, chen_xiangping@emc.com
Subject: Re: Kernel deadlock using nbd over acenic driver
Date: Fri, 17 May 2002 09:44:51 +0100 (BST) [thread overview]
Message-ID: <200205170844.JAA30049@gw.chygwyn.com> (raw)
In-Reply-To: <200205162254.g4GMsiP07608@oboe.it.uc3m.es> from "Peter T. Breuer" at May 17, 2002 12:54:44 AM
Hi,
>
> Sorry I didn't pick this up earlier ..
>
> "Steven Whitehouse wrote:"
> > we don't want to alter that. The "priority inversion" that I mentioned occurs
> > when you get processes without PF_MEMALLOC set calling nbd_send_req() as when
>
> There aren't any processes that call nbd_send_req except the unique
> nbd client process stuck in the protocol loop in the kernel ioctl
> that it entered at startup.
>
Assuming that we are still talking kernel nbd here and not enbd, I think
you've got that backwards. nbd_send_req() is called from do_nbd_request()
which is the block device request function and can therefore be called
from any thread running the disk task queue, which I think would normally
mean that its a thread waiting for I/O as in buffer.c:__wait_on_buffer()
The loop that the ioctl runs only does network receives and thus doesn't
do any allocations of any kind itself. The only worry on the receive side
is that buffers are not available in the network device driver, but this
doesn't seem to be a problem. There are no backed up replies in the
server (we can tell from the socket queue lengths) and we know that we
can still ping clients which are otherwise dead due to the deadlock. I
don't think that at the moment there is any problem on the receive side.
> > they call through to page_alloc.c:__alloc_pages() they won't use any memory
> > once the free pages hits the min mark even though there is memory available
> > (see the code just before and after the rebalance label).
>
> So I think the exact inversion you envisage cannot happen, but ...
>
> I think that the problem is that the nbd-client process doesn't have
> high memory priority, and high priority processes can scream and holler
> all they like and will claim more memory, but won't make anythung better
> because the nbd process can't run (can't get tcp buffers), and so
> can't release the memory pressure.
>
> So I think that your PF_MEMALLOC idea does revert the inversion.
>
> Would it also be good to prevent other processes running? or is it too
> late. Yes, I think it is too late to do any good, by the time we feel
> this pressure.
>
> Peter
>
The mechanism works fine for block devices which do not need to allocate
memory in their write out paths. Since we know there is a maximum amount
of memory required by nbd and bounded by the maximum request size plus the
small header per request, it would seem reasonable that to avoid deadlock
we simply need to raise the amount of memory reserved for low memory
situations until we've provided what nbd needs,
Steve.
next prev parent reply other threads:[~2002-05-17 9:04 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-16 22:54 Peter T. Breuer
2002-05-17 8:44 ` Steven Whitehouse [this message]
2002-05-23 13:21 ` Peter T. Breuer
2002-05-24 10:11 ` Steven Whitehouse
2002-05-24 11:43 ` Peter T. Breuer
2002-05-24 13:28 ` Steven Whitehouse
2002-05-24 15:54 ` Peter T. Breuer
2002-05-27 13:04 ` Steven Whitehouse
2002-05-27 19:51 ` Peter T. Breuer
2002-05-27 13:44 ` Pavel Machek
2002-05-29 10:51 ` Peter T. Breuer
2002-05-29 11:21 ` Pavel Machek
2002-05-29 12:10 ` Peter T. Breuer
2002-05-29 13:24 ` Jens Axboe
2002-06-01 21:13 ` Peter T. Breuer
2002-06-05 8:48 ` Steven Whitehouse
2002-06-02 6:39 ` Pavel Machek
[not found] <3CE40A77.22C74DC1@zip.com.au>
2002-05-16 20:28 ` Peter T. Breuer
-- strict thread matches above, loose matches on Subject: below --
2002-05-16 13:18 chen, xiangping
2002-05-15 21:43 Peter T. Breuer
2002-05-16 8:33 ` Steven Whitehouse
2002-05-15 17:43 Peter T. Breuer
2002-05-15 19:43 ` Steven Whitehouse
2002-05-16 5:15 ` Peter T. Breuer
2002-05-16 8:04 ` Steven Whitehouse
2002-05-16 8:49 ` Peter T. Breuer
2002-05-15 16:01 Peter T. Breuer
2002-05-14 17:42 chen, xiangping
2002-05-14 17:36 chen, xiangping
2002-05-14 18:02 ` Alan Cox
2002-05-14 16:07 chen, xiangping
2002-05-14 16:32 ` Steven Whitehouse
2002-05-14 16:48 ` Alan Cox
2002-05-15 22:31 ` Oliver Xymoron
2002-05-16 5:10 ` Peter T. Breuer
2002-05-16 5:19 ` Peter T. Breuer
2002-05-16 14:29 ` Oliver Xymoron
2002-05-16 15:35 ` Peter T. Breuer
2002-05-16 16:22 ` Oliver Xymoron
2002-05-16 16:45 ` Peter T. Breuer
2002-05-16 16:35 ` Steven Whitehouse
2002-05-17 7:01 ` Peter T. Breuer
2002-05-17 9:26 ` Steven Whitehouse
2002-05-14 15:05 chen, xiangping
2002-05-14 15:11 ` Jes Sorensen
2002-05-10 15:39 chen, xiangping
2002-05-10 15:02 chen, xiangping
2002-05-10 15:11 ` Steven Whitehouse
2002-05-14 14:58 ` Jes Sorensen
2002-05-06 15:05 chen, xiangping
2002-05-07 8:15 ` Steven Whitehouse
2002-05-06 2:26 chen, xiangping
2002-05-06 8:45 ` Steven Whitehouse
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=200205170844.JAA30049@gw.chygwyn.com \
--to=steve@gw.chygwyn.com \
--cc=Steve@ChyGwyn.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chen_xiangping@emc.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ptb@it.uc3m.es \
/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
all inboxes | Powered by JetHome®