From: Andrew Morton <akpm@linux-foundation.org>
To: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: Re: POHMELFS high performance network filesystem. Transactions, failover, performance.
Date: Wed, 14 May 2008 01:01:01 -0700 [thread overview]
Message-ID: <20080514010101.8ef541b3.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080514074028.GA28330@2ka.mipt.ru>
On Wed, 14 May 2008 11:40:30 +0400 Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> Hi Andrew.
>
> On Tue, May 13, 2008 at 11:33:41PM -0700, Andrew Morton (akpm@linux-foundation.org) wrote:
> > If any thread takes more than one kmap() at a time, it is deadlockable.
> > Because there is a finite pool of kmaps. Everyone can end up holding
> > one or more kmaps, then waiting for someone else to release one.
>
> It never takes the whole LAST_PKMAP maps. So the same can be applied to
> any user who kmaps at least one page - while user waits for free slot,
> it can be reused by someone else and so on.
>
> But it can be speed issue, on 32 bit machine with 8gb of ram essentially
> all pages were highmem and required mapping, so this does slows things
> down (probably a lot), so I will extend writeback path of the POHMELFS
> not to kmap pages, but instead use ->sendpage(), which if needed will
> map page one-by-one. Current approach when page is mapped and then
> copied looks really beter since the only one sending function is used
> which takes lock only single time.
OK.
> > Duplicating page_waitqueue() is bad. Exporting it is probably bad too.
> > Better would be to help us work out why the core kernel infrastructure is
> > unsuitable, then make it suitable.
>
> When ->writepage() is used, it has to wait until page is written (remote
> side sent acknowledge), so if multiple pages are being written
> simultaneously we either have to allocate shared structure or use
> per-page wait.
That sounds exactly like wait_on_page_writeback()?
> Right now there are transactions (and they will be used
> for all operations eventually), so this waiting can go away.
> It is exactly the same logic which lock_page() uses.
>
> Will lock_page_killable()/__lock_page_killable() be exported to modules?
Maybe, if there's a need. I see no particular problem with that.
next prev parent reply other threads:[~2008-05-14 8:14 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-13 17:45 POHMELFS high performance network filesystem. Transactions, failover, performance Evgeniy Polyakov
2008-05-13 19:09 ` Jeff Garzik
2008-05-13 20:51 ` Evgeniy Polyakov
2008-05-14 0:52 ` Jamie Lokier
2008-05-14 1:16 ` Florian Wiessner
2008-05-14 8:10 ` Evgeniy Polyakov
2008-05-14 7:57 ` Evgeniy Polyakov
2008-05-14 13:35 ` Sage Weil
2008-05-14 13:52 ` Evgeniy Polyakov
2008-05-14 14:31 ` Jamie Lokier
2008-05-14 15:00 ` Evgeniy Polyakov
2008-05-14 19:08 ` Jeff Garzik
2008-05-14 19:32 ` Evgeniy Polyakov
2008-05-14 20:37 ` Jeff Garzik
2008-05-14 21:19 ` Evgeniy Polyakov
2008-05-14 21:34 ` Jeff Garzik
2008-05-14 21:32 ` Jamie Lokier
2008-05-14 21:37 ` Jeff Garzik
2008-05-14 21:43 ` Jamie Lokier
2008-05-14 22:02 ` Evgeniy Polyakov
2008-05-14 22:28 ` Jamie Lokier
2008-05-14 22:45 ` Evgeniy Polyakov
2008-05-15 1:10 ` Jamie Lokier
2008-05-15 7:34 ` Evgeniy Polyakov
2008-05-14 19:05 ` Jeff Garzik
2008-05-14 21:38 ` Jamie Lokier
2008-05-14 19:03 ` Jeff Garzik
2008-05-14 19:38 ` Evgeniy Polyakov
2008-05-14 21:57 ` Jamie Lokier
2008-05-14 22:06 ` Jeff Garzik
2008-05-14 22:41 ` Evgeniy Polyakov
2008-05-14 22:50 ` Evgeniy Polyakov
2008-05-14 22:32 ` Evgeniy Polyakov
2008-05-14 14:09 ` Jamie Lokier
2008-05-14 16:09 ` Sage Weil
2008-05-14 19:11 ` Jeff Garzik
2008-05-14 21:19 ` Jamie Lokier
2008-05-14 18:24 ` Jeff Garzik
2008-05-14 20:00 ` Sage Weil
2008-05-14 21:49 ` Jeff Garzik
2008-05-14 22:26 ` Sage Weil
2008-05-14 22:35 ` Jamie Lokier
2008-05-14 6:33 ` Andrew Morton
2008-05-14 7:40 ` Evgeniy Polyakov
2008-05-14 8:01 ` Andrew Morton [this message]
2008-05-14 8:31 ` Evgeniy Polyakov
2008-05-14 8:08 ` Evgeniy Polyakov
2008-05-14 13:41 ` Sage Weil
2008-05-14 13:56 ` Evgeniy Polyakov
2008-05-14 17:56 ` Andrew Morton
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=20080514010101.8ef541b3.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=johnpol@2ka.mipt.ru \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.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 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.