From: Ingo Molnar <mingo@elte.hu>
To: Lee Revell <rlrevell@joe-job.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: ext3 allocate-with-reservation latencies
Date: Tue, 5 Apr 2005 06:13:59 +0200 [thread overview]
Message-ID: <20050405041359.GA17265@elte.hu> (raw)
In-Reply-To: <1112673094.14322.10.camel@mindpipe>
* Lee Revell <rlrevell@joe-job.com> wrote:
> I can trigger latencies up to ~1.1 ms with a CVS checkout. It looks
> like inside ext3_try_to_allocate_with_rsv, we spend a long time in this
> loop:
>
> ext3_test_allocatable (bitmap_search_next_usable_block)
> find_next_zero_bit (bitmap_search_next_usable_block)
> find_next_zero_bit (bitmap_search_next_usable_block)
>
> ext3_test_allocatable (bitmap_search_next_usable_block)
> find_next_zero_bit (bitmap_search_next_usable_block)
> find_next_zero_bit (bitmap_search_next_usable_block)
Breaking the lock is not really possible at that point, and it doesnt
look too easy to make that path preemptable either. (To make it
preemptable rsv_lock would need to become a semaphore (this could be
fine, as it's only used when a new reservation window is created).)
The hard part is the seqlock - the read side is performance-critical,
maybe it could be solved via a preemptable but still scalable seqlock
variant that uses a semaphore for the write side? It all depends on what
the scalability impact of using a semaphore for the new-window code
would be.
the best longterm solution for these types of tradeoffs seems to be to
add a locking primitive that is a spinlock on !PREEMPT kernels and a
semaphore on PREEMPT kernels. I.e. not as drastic as a full PREEMPT_RT
kernel, but good enough to make latency-critical codepaths of ext3
preemptable, without having to hurt scalability on !PREEMPT. The
PREEMPT_RT kernel has all the 'compile-time type-switching'
infrastructure for such tricks, all that needs to be changed to switch a
lock's type is to change the spinlock definition - all the
spin_lock(&lock) uses can remain unchanged. (The same method is used on
PREEMPT_RT to have 'dual-type' spinlocks.)
the same thing could then also be used for things like the mm lock, and
other longer-held locks that PREEMPT would like to see preemptable. It
would also be a good first step towards merging the PREEMPT_RT
infrastructure ;-) I'll cook up something.
Ingo
next prev parent reply other threads:[~2005-04-05 4:14 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-05 3:51 ext3 allocate-with-reservation latencies Lee Revell
2005-04-05 4:13 ` Ingo Molnar [this message]
2005-04-05 6:10 ` Mingming Cao
2005-04-05 16:38 ` Lee Revell
2005-04-06 5:35 ` Mingming Cao
2005-04-06 9:51 ` Stephen C. Tweedie
2005-04-06 16:53 ` Mingming Cao
2005-04-06 18:22 ` Stephen C. Tweedie
2005-04-06 19:03 ` Mingming Cao
2005-04-07 8:14 ` Ingo Molnar
2005-04-07 13:08 ` Stephen C. Tweedie
2005-04-07 19:16 ` Mingming Cao
2005-04-07 23:37 ` Mingming Cao
2005-04-08 14:40 ` Stephen C. Tweedie
2005-04-08 16:06 ` Arjan van de Ven
2005-04-08 18:10 ` Mingming Cao
2005-04-08 18:12 ` Lee Revell
2005-04-11 11:48 ` Stephen C. Tweedie
2005-04-11 18:38 ` Mingming Cao
2005-04-11 19:12 ` Lee Revell
2005-04-11 19:22 ` Lee Revell
2005-04-11 19:57 ` Stephen C. Tweedie
2005-04-12 6:41 ` Mingming Cao
2005-04-12 11:18 ` Stephen C. Tweedie
2005-04-12 23:27 ` Mingming Cao
2005-04-13 10:29 ` Stephen C. Tweedie
[not found] ` <1113597161.3899.80.camel@localhost.localdomain>
2005-04-18 18:00 ` Stephen C. Tweedie
2005-04-18 21:56 ` [Ext2-devel] " Mingming Cao
2005-04-22 22:10 ` [RFC][PATCH] Reduce ext3 allocate-with-reservation lock latencies Mingming Cao
2005-04-28 3:45 ` Lee Revell
2005-04-28 7:37 ` Mingming Cao
2005-04-28 16:12 ` Lee Revell
2005-04-28 18:34 ` Mingming Cao
2005-04-29 6:18 ` Mingming Cao
2005-04-28 19:14 ` [RFC] Adding multiple block allocation to current ext3 Mingming Cao
2005-04-29 13:52 ` [Ext2-devel] [RFC] Adding multiple block allocation Suparna Bhattacharya
2005-04-29 17:10 ` Mingming Cao
2005-04-29 19:42 ` Mingming Cao
2005-04-29 20:57 ` Andrew Morton
2005-04-29 20:57 ` Andrew Morton
2005-04-29 21:12 ` [Ext2-devel] " Mingming Cao
2005-04-29 21:12 ` Mingming Cao
2005-04-29 21:34 ` [Ext2-devel] " Andrew Morton
2005-04-29 21:34 ` Andrew Morton
2005-04-30 16:00 ` [Ext2-devel] " Suparna Bhattacharya
2005-04-29 18:45 ` Badari Pulavarty
2005-04-29 23:22 ` Mingming Cao
2005-04-30 16:10 ` Suparna Bhattacharya
2005-04-30 16:10 ` Suparna Bhattacharya
2005-04-30 17:11 ` [Ext2-devel] " Suparna Bhattacharya
2005-04-30 18:07 ` Mingming Cao
2005-05-02 4:46 ` Suparna Bhattacharya
2005-04-30 16:52 ` Suparna Bhattacharya
2005-04-30 0:33 ` Mingming Cao
2005-04-30 0:33 ` Mingming Cao
2005-04-30 0:44 ` [Ext2-devel] " Mingming Cao
2005-04-30 0:44 ` Mingming Cao
2005-04-30 17:03 ` [Ext2-devel] " Suparna Bhattacharya
2006-01-10 23:26 ` [PATCH 0/5] multiple block allocation to current ext3 Mingming Cao
2006-01-11 5:25 ` Andrew Morton
2006-01-11 19:17 ` Mingming Cao
2006-01-11 19:43 ` Andrew Morton
2006-01-11 21:31 ` Mingming Cao
2006-01-14 1:12 ` Fall back io scheduler for 2.6.15? Mingming Cao
2006-01-14 1:49 ` Andrew Morton
2006-01-14 5:22 ` Dave Jones
2006-01-16 8:43 ` Jens Axboe
2006-01-16 19:45 ` [PATCH] Fall back io scheduler ( Re: [Ext2-devel] Re: Fall back io scheduler for 2.6.15?) Mingming Cao
2006-01-16 19:49 ` Jens Axboe
2006-01-16 19:57 ` Mingming Cao
2006-01-19 19:37 ` Fall back io scheduler for 2.6.15? Nate Diller
2006-01-20 8:10 ` Jens Axboe
2006-01-16 19:38 ` [Ext2-devel] " Mingming Cao
2005-04-29 6:28 ` [PATCH] Reduce ext3 allocate-with-reservation lock latencies Mingming Cao
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=20050405041359.GA17265@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rlrevell@joe-job.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.