remarkable-linux/fs/ocfs2
Mark Fasheh 6b82021b9e ocfs2: increase the default size of local alloc windows
I have observed that the current size of 8M gives us pretty poor
fragmentation on multi-threaded workloads which do lots of writes.

Generally, I can increase the size of local alloc windows and observe a
marked decrease in fragmentation, even up and beyond window sizes of 512
megabytes. This makes sense for a couple reasons - larger local alloc means
more room for reservation windows. On multi-node workloads the larger local
alloc helps as well because we don't have to do window slides as often.

Also, I removed the OCFS2_DEFAULT_LOCAL_ALLOC_SIZE constant as it is no
longer used and the comment above it was out of date.

To test fragmentation, I used a workload which launched 4 threads that did
4k writes into a series of about 140 alternating files.

With resv_level=2, and a 4k/4k file system I observed the following average
fragmentation for various localalloc= parameters:

localalloc=	avg. fragmentation
	8		48
	32		16
	64		10
	120		7

On larger cluster sizes, the difference is more dramatic.

The new default size top out at 256M, which we'll only get for cluster
sizes of 32K and above.

Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
2010-05-05 18:18:07 -07:00
..
cluster ocfs2: allocation reservations 2010-05-05 18:17:30 -07:00
dlm dlm: allow dlm do recovery during shutdown 2010-02-26 15:41:19 -08:00
dlmfs ocfs2/userdlm: Add tracing in userdlm 2010-02-27 19:57:07 -08:00
acl.c ocfs2: set i_mode on disk during acl operations 2010-03-17 12:28:22 -07:00
acl.h
alloc.c ocfs2: use allocation reservations during file write 2010-05-05 18:17:30 -07:00
alloc.h
aops.c ocfs2: use allocation reservations during file write 2010-05-05 18:17:30 -07:00
aops.h
blockcheck.c tree-wide: fix typos "offest" -> "offset" 2009-12-04 15:39:50 +01:00
blockcheck.h
buffer_head_io.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
buffer_head_io.h
dcache.c
dcache.h
dir.c ocfs2: use allocation reservations for directory data 2010-05-05 18:17:30 -07:00
dir.h
dlmglue.c Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
dlmglue.h
export.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
export.h
extent_map.c Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
extent_map.h
file.c ocfs2: use allocation reservations during file write 2010-05-05 18:17:30 -07:00
file.h
heartbeat.c
heartbeat.h
inode.c ocfs2: use allocation reservations for directory data 2010-05-05 18:17:30 -07:00
inode.h ocfs2: use allocation reservations during file write 2010-05-05 18:17:30 -07:00
ioctl.c ocfs2: Use compat_ptr in reflink_arguments. 2010-02-02 18:56:37 -08:00
ioctl.h Ocfs2: Move ocfs2 ioctl definitions from ocfs2_fs.h to newly added ocfs2_ioctl.h 2010-03-02 14:10:20 -08:00
journal.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
journal.h ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
Kconfig
localalloc.c ocfs2: increase the default size of local alloc windows 2010-05-05 18:18:07 -07:00
localalloc.h ocfs2: increase the default size of local alloc windows 2010-05-05 18:18:07 -07:00
locks.c [PATCH] Skip check for mandatory locks when unlocking 2010-03-17 12:07:16 -07:00
locks.h
Makefile ocfs2: allocation reservations 2010-05-05 18:17:30 -07:00
mmap.c
mmap.h
namei.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
namei.h
ocfs1_fs_compat.h
ocfs2.h ocfs2: increase the default size of local alloc windows 2010-05-05 18:18:07 -07:00
ocfs2_fs.h ocfs2: increase the default size of local alloc windows 2010-05-05 18:18:07 -07:00
ocfs2_ioctl.h Ocfs2: Move ocfs2 ioctl definitions from ocfs2_fs.h to newly added ocfs2_ioctl.h 2010-03-02 14:10:20 -08:00
ocfs2_lockid.h
ocfs2_lockingver.h ocfs2_dlmfs: Enable the use of user cluster stacks. 2010-02-26 15:41:18 -08:00
quota.h quota: Move definition of QFMT_OCFS2 to linux/quota.h 2009-12-10 15:02:53 +01:00
quota_global.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
quota_local.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
refcounttree.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
refcounttree.h
reservations.c ocfs2: use allocation reservations for directory data 2010-05-05 18:17:30 -07:00
reservations.h ocfs2: use allocation reservations for directory data 2010-05-05 18:17:30 -07:00
resize.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
resize.h
slot_map.c
slot_map.h
stack_o2cb.c ocfs2: Hang the locking proto on the cluster conn and use it in asts. 2010-02-26 15:41:16 -08:00
stack_user.c ocfs2: Remove the ast pointers from ocfs2_stack_plugins 2010-02-26 15:41:16 -08:00
stackglue.c ocfs2_dlmfs: Enable the use of user cluster stacks. 2010-02-26 15:41:18 -08:00
stackglue.h ocfs2_dlmfs: Enable the use of user cluster stacks. 2010-02-26 15:41:18 -08:00
suballoc.c ocfs2: remove ocfs2_local_alloc_in_range() 2010-05-05 18:17:31 -07:00
suballoc.h ocfs2: allocation reservations 2010-05-05 18:17:30 -07:00
super.c ocfs2: increase the default size of local alloc windows 2010-05-05 18:18:07 -07:00
super.h
symlink.c ocfs2: Fix refcnt leak on ocfs2_fast_follow_link() error path 2010-01-11 15:38:50 -08:00
symlink.h
sysfile.c
sysfile.h
uptodate.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
uptodate.h
ver.c
ver.h
xattr.c ocfs2: Make ocfs2_journal_dirty() void. 2010-05-05 18:17:29 -07:00
xattr.h