xfs: increase prealloc size to double that of the previous extent
The updated speculative preallocation algorithm for handling sparse files can becomes less effective in situations with a high number of concurrent, sequential writers. The number of writers and amount of available RAM affect the writeback bandwidth slicing algorithm, which in turn affects the block allocation pattern of XFS. For example, running 32 sequential writers on a system with 32GB RAM, preallocs become fixed at a value of around 128MB (instead of steadily increasing to the 8GB maximum as sequential writes proceed). Update the speculative prealloc heuristic to base the size of the next prealloc on double the size of the preceding extent. This preserves the original aggressive speculative preallocation behavior and continues to accomodate sparse files at a slight cost of increasing the size of preallocated data regions following holes of sparse files. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
parent
e78c420bfc
commit
e114b5fce6
@ -362,7 +362,7 @@ xfs_iomap_eof_prealloc_initial_size(
|
||||
if (imap[0].br_startblock == HOLESTARTBLOCK)
|
||||
return 0;
|
||||
if (imap[0].br_blockcount <= (MAXEXTLEN >> 1))
|
||||
return imap[0].br_blockcount;
|
||||
return imap[0].br_blockcount << 1;
|
||||
return XFS_B_TO_FSB(mp, offset);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user