ocfs2-devel.oss.oracle.com archive mirror
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH, RFC 0/3] *** SUBJECT HERE ***
@ 2010-08-03 16:01 Theodore Ts'o
  2010-08-03 16:01 ` [Ocfs2-devel] [PATCH, RFC 1/3] jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop Theodore Ts'o
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Theodore Ts'o @ 2010-08-03 16:01 UTC (permalink / raw)
  To: Ext4 Developers List, ocfs2-devel
  Cc: John Stultz, Keith Maanthey, Eric Whitney, Theodore Ts'o

The first patch in this patch series hasn't changed since when I had
last posted it, but I'm including it again for the benefit of the folks
on ocfs2-dev.

Thanks to some work done by Eric Whitney, when he accidentally ran the
command "mkfs.ext4 -t xfs", and created a ext4 file system without a
journal, it appears that main scalability bottleneck for ext4 is in the
jbd2 layer.  In fact, his testing on a 48-core system shows that on some
workloads, ext4 is roughly comparable with XFS!

The lockstat results indicate that the main bottlenecks are in the
j_state_lock and t_handle_lock, especially in start_this_handle() in
fs/jbd2/transaction.c.  A previous patch, which removed an unneeded
grabbing of j_state_lock jbd2_journal_stop() relieved pressure on that
lock and was noted to make a significant difference for dbench on a
kernel with CONFIG_PREEMPT_RT enabled, as well as on a 48-core AMD
system from HP.   This patch is already in 2.6.35, and the benchmark
results can be found here: http://free.linux.hp.com/~enw/ext4/2.6.34/

This patch series removes all exclusive spinlocks when starting and
stopping jbd2 handles, which should improve things even more.  Since
OCFS2 uses the jbd2 layer, and the second patch in this patch series
touches ocfs2 a wee bit, I'd appreciate it if you could take a look and
let me know what you think.  Hopefully, this should also improve OCFS2's
scalability.

Best regards,

     					- Ted

Theodore Ts'o (3):
  jbd2: Use atomic variables to avoid taking t_handle_lock in
    jbd2_journal_stop
  jbd2: Change j_state_lock to be a rwlock_t
  jbd2: Remove t_handle_lock from start_this_handle()

 fs/ext4/inode.c       |    4 +-
 fs/ext4/super.c       |    4 +-
 fs/jbd2/checkpoint.c  |   18 +++---
 fs/jbd2/commit.c      |   42 +++++++-------
 fs/jbd2/journal.c     |   94 +++++++++++++++----------------
 fs/jbd2/transaction.c |  149 ++++++++++++++++++++++++++++---------------------
 fs/ocfs2/journal.c    |    4 +-
 include/linux/jbd2.h  |   12 ++--
 8 files changed, 174 insertions(+), 153 deletions(-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2010-08-11 21:08 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-03 16:01 [Ocfs2-devel] [PATCH, RFC 0/3] *** SUBJECT HERE *** Theodore Ts'o
2010-08-03 16:01 ` [Ocfs2-devel] [PATCH, RFC 1/3] jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop Theodore Ts'o
2010-08-03 16:01 ` [Ocfs2-devel] [PATCH, RFC 2/3] jbd2: Change j_state_lock to be a rwlock_t Theodore Ts'o
2010-08-04  0:08   ` Ted Ts'o
2010-08-03 16:01 ` [Ocfs2-devel] [PATCH, RFC 3/3] jbd2: Remove t_handle_lock from start_this_handle() Theodore Ts'o
2010-08-03 19:07 ` [Ocfs2-devel] [PATCH, RFC 0/3] *** SUBJECT HERE *** Joel Becker
2010-08-03 20:07   ` Ted Ts'o
2010-08-03 21:19     ` Joel Becker
2010-08-03 22:57       ` Ted Ts'o
2010-08-10  3:40 ` [Ocfs2-devel] [PATCH, RFC 0/3] *** SUBJECT HERE *** (ext4 scalability patches) Eric Whitney
2010-08-11 21:08   ` Ted Ts'o

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).