[Top] [All Lists]

Re: [FAQ v2] XFS speculative preallocation

To: Brian Foster <bfoster@xxxxxxxxxx>
Subject: Re: [FAQ v2] XFS speculative preallocation
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Mon, 07 Apr 2014 14:58:45 -0500
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20140407153906.GC48184@xxxxxxxxxxxxxxx>
References: <20140407153906.GC48184@xxxxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 04/07/14 10:39, Brian Foster wrote:
Hi all,

This is v2 of the speculative preallocation FAQ bits. The initial
proposal was here:


This version includes some updates based on review from arekm and
dchinner. Most notably, the content has been broken down into a few more
questions. Unless there are further major changes required, I'll plan to
post something along these lines to the wiki when my account is
approved. Thanks for the feedback!



Q: Why do files on XFS use more data blocks than expected?


The XFS speculative preallocation algorithm allocates extra blocks
beyond end of file (EOF) to minimise file fragmentation during buffered
  ^^^ beyond here and then later adopt post-EOF phrasing.


See the FAQ entry on speculative preallocation for details.

Q: What is speculative preallocation?


XFS speculatively preallocates post-EOF blocks on file extending writes
in anticipation of future extending writes. The size of a preallocation
is dynamic and depends on the runtime state of the file and fs.
Generally speaking, preallocation is disabled for very small files and
                            vague what is very small?   ^^^

Q: Is speculative preallocation permanent?


Although speculative preallocation can lead to reports of excess space
usage, the preallocated space is not permanent unless explicitly made so
via fallocate or a similar interface. Preallocated space can also be
encoded permanently in situations where file size is extended beyond a
range of post-EOF blocks (i.e., via truncate). Otherwise, preallocated
blocks are reclaimed on file close, inode reclaim, unmount or in the
background once file write activity subsides.

Switch order?

Normally, preallocated
blocks are reclaimed on file close, inode reclaim, unmount or in the
background once file write activity subsides. They can be explictly made permanent .

Q: My workload has known characteristics - can I tune speculative
preallocation to an optimal fixed size?


The 'allocsize=' mount option configures the XFS block allocation
algorithm to use a fixed allocation size. Speculative preallocation is
not dynamically resized when the allocsize mount option is set and thus
the potential for fragmentation is increased. XFS historically set

sets the

allocsize to 64k by default.

Q: Can I disable S-P-A ?


<Prev in Thread] Current Thread [Next in Thread>