I used strace to collect the writes, and as far as I can tell they are
aligned to the cluster size (64K). Below are some examples...

1520414 pwritev(35,
[{iov_base="\5\277z\314\24\305\177\r\340\327\f:e\222\10\33\374\232Q;FuN\t\0\0\325\275\0\0\0\0"...,
iov_len=4096},
{iov_base="v\24\324\337\347\364i\26\216\202\277\361\262N\23\22Q\360\360\234\366\360J\1\0\20\325\275\0\0\0\0"...,
iov_len=61440}], 2, 326696960 <unfinished ...>
1520424 pwrite64(35,
"\200\263\303V)\2779Zpv\30Q\203\2142\24\316\16\353.\4\251T\35\331av\376\252}J\33"...,
65536, 381353984 <unfinished ...>
1520424 pwrite64(35,
"\0\0\333\204\0\0\0\0\nT\0a\17JR\v\201\n\33\302\301\230(\16P\341\2\263\n2\253\22"...,
65536, 381419520 <unfinished ...>
1520419 pwrite64(35,
"\220\255\361.\v$C1\2625\26\217\10\315\22\17\266\306\t\367\25\22\274\16\3268\206\333\275\206F\22"...,
65536, 381485056 <unfinished ...>
1520424 pwrite64(35,
"Z\224\265`\325t0\2\0\0005\271\1\0\0\0Q\266\367\"\323:\247\f\0\0\205\207\1\0\0\0"...,
65536, 381550592 <unfinished ...>
1520419 pwritev(35,
[{iov_base="M=Fsw\234pd\0\09\32\1\0\0\0\365\310#V\\\303\356\25\36\371I\246Y\255\202\6"...,
iov_len=61440},
{iov_base="\314\242k\370\345;w\22\0\3609\32\1\0\0\0\213n\210#\225\206)\31\321\215+m\16\237\347\36"...,
iov_len=4096}], 2, 381616128 <unfinished ...>

On Wed, Aug 26, 2020 at 2:00 PM Alberto Garcia <be...@igalia.com> wrote:

> On Wed 26 Aug 2020 03:18:32 PM CEST, Kevin Wolf wrote:
> >> My understanding is that writing 4K blocks requires a
> >> read-modify-write because you must fetch a complete cluster from
> >> deeper in the overlay chain before writing to the active
> >> overlay. However, this does not explain the drop in performance when
> >> writing 64K blocks.
>
> Your understanding is correct. Apart from what Kevin wrote, I assume
> that the write requests are always aligned to the cluster size, is that
> right?
>
> Berto
>

Reply via email to