linux/fs/xfs/linux-2.6
Dave Chinner 51749e47e1 xfs: log IO completion workqueue is a high priority queue
The workqueue implementation in 2.6.36-rcX has changed, resulting
in the workqueues no longer having dedicated threads for work
processing. This has caused severe livelocks under heavy parallel
create workloads because the log IO completions have been getting
held up behind metadata IO completions.  Hence log commits would
stall, memory allocation would stall because pages could not be
cleaned, and lock contention on the AIL during inode IO completion
processing was being seen to slow everything down even further.

By making the log Io completion workqueue a high priority workqueue,
they are queued ahead of all data/metadata IO completions and
processed before the data/metadata completions. Hence the log never
gets stalled, and operations needed to clean memory can continue as
quickly as possible. This avoids the livelock conditions and allos
the system to keep running under heavy load as per normal.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
2010-09-10 10:16:54 -05:00
..
kmem.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kmem.h xfs: replace KM_LARGE with explicit vmalloc use 2010-01-21 13:44:56 -06:00
mrlock.h
sv.h
time.h
xfs_acl.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_aops.c xfs: do not discard page cache data on EAGAIN 2010-08-24 11:47:51 +10:00
xfs_aops.h direct-io: move aio_complete into ->end_io 2010-07-26 16:09:02 -05:00
xfs_buf.c xfs: log IO completion workqueue is a high priority queue 2010-09-10 10:16:54 -05:00
xfs_buf.h xfs: improve buffer cache hash scalability 2010-09-02 15:14:38 +10:00
xfs_cred.h
xfs_export.c xfs: remove xfs_iput_new 2010-07-26 13:16:44 -05:00
xfs_export.h
xfs_file.c xfs: remove a dmapi leftover 2010-07-26 13:16:47 -05:00
xfs_fs_subr.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_globals.c
xfs_globals.h
xfs_ioctl.c xfs: prevent reading uninitialized stack memory 2010-09-10 07:39:28 -05:00
xfs_ioctl.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_ioctl32.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_ioctl32.h
xfs_iops.c xfs: Make fiemap work with sparse files 2010-09-03 09:02:11 -05:00
xfs_iops.h
xfs_linux.h xfs: new truncate sequence 2010-08-09 16:47:42 -04:00
xfs_quotaops.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 2010-08-07 12:57:07 -07:00
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: dummy transactions should not dirty VFS state 2010-08-24 11:46:31 +10:00
xfs_super.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_sync.c xfs: dummy transactions should not dirty VFS state 2010-08-24 11:46:31 +10:00
xfs_sync.h xfs: remove explicit xfs_sync_data/xfs_sync_attr calls on umount 2010-07-26 13:16:42 -05:00
xfs_sysctl.c
xfs_sysctl.h
xfs_trace.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_trace.h convert remaining ->clear_inode() to ->evict_inode() 2010-08-09 16:48:37 -04:00
xfs_version.h
xfs_vnode.h
xfs_xattr.c xfs: constify xattr_handler 2010-05-21 18:31:19 -04:00