Hello Jean-Noël,

Thursday, April 9, 2009, 3:39:50 PM, you wrote:

JNM> Hi François,

JNM> You should take care of the recordsize in your filesystems. This should
JNM> be tuned according to the size of the most accessed files.

I don't think this is necessary and it will rather do more harm than
good in the squid case.

With default recordsize of 128KB zfs will use a smaller block size for
smaller files - recordsize is a maximum size (limit) of a block and
not a fixed block size. This is a common misconception about zfs.

Now, under normal circumstances, when for example Oracle creates large
file zfs will create the file using block size of recordsize (if file
is larger than recordsize) but in most cases Oracle (or any other
programs) will access the data in a much smaller logical block
(db_block_size in oracle case) which in turn will force zfs to read
entire fs block in order to verify it's checksums. Now if the working
set is larger than a memory and reads are mostly random reads of a
logical size being much smaller than zfs recordsize it will negatively
impact the performance.

In squid case most (all?) files will be read entirely in sequential
manner or not at all so generally the largel fs block the better which
means that default 128KB (which is the maximum supported value) is
best options. If file is for example 8K in size then zfs will use 8KB
fs block if recordsize is >=8KB.

The only issue I'm aware of is a tail block (last block in a file)
which if considerably smaller than current fixed block size for the
file will unnecessary allocate too much disk space. Lowering the
recordsize should alleviate extra disk usage (depending on particular
workset) but generally won't matter from the performance point of view.

Best regards,
 Robert Milkowski

zfs-discuss mailing list

Reply via email to