[Gluster-devel] Readdir-ahead

Keiviw keiviw at 163.com
Tue Feb 23 07:08:48 UTC 2016




1,In the code,readdir-ahead didn't package up the readdir requests into a bigger request, it just packaged up the dentries, if the dentries' size was greater than the request size, the bigger request returned to the client, wasn't it?
2,The requests from the Readdir-ahead Xlator wind down to next Xlator ,did they send to a server or brodcast to all the servers?
3,As you have said, the preload is in progress, a readdir from application waits for its completion. And If I change the buffer(request) size to a bigger one, will the application wait for a long time? Could it be a stream, the readdir from application fetches dentries in the buffer, and the readdir-ahead xlator pre-fetches dentries from the servers?
4,When does it can be a larger buffer, like io-cache,which cached the data/dentries read before? As you know, ls is so slow.









At 2016-02-23 10:00:51, "Raghavendra Gowdappa" <rgowdapp at redhat.com> wrote:
>
>
>----- Original Message -----
>> From: "Keiviw" <keiviw at 163.com>
>> To: gluster-devel at gluster.org
>> Sent: Tuesday, February 23, 2016 6:20:28 AM
>> Subject: [Gluster-devel] Readdir-ahead
>> 
>> I have two questions about the performance,readdir-ahead.
>> 1. In the code,the request max_size is 131072,128K. If i change the max_size
>> to a larger size, what will happen?
>
>readdir-ahead winds down readdir calls with a buffer of size "max_size". If you increase the size, each readdir (including those "preload" requests which are not issued by application) will be done with a bigger buffer to fetch dentries.
>
>> 2. As what i have said in question 1, for a larger buffer, if the second
>> readdir arrives, the denty will return from the buffer or from the server?
>
>Only if a preload (a readdir request not initiated by application, but instead triggered by readdir-ahead in an attempt to pre-emptively fill the read-ahead buffer) is in progress, a readdir from application waits for its completion. For all other cases, readdir-ahead is bypassed. Also note that readdir-ahead is "per-fd" based cache. So, barring cases like duping an fd (including fork() ), one shouldn't get parallel readdir requests on a single fd.
>
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Gluster-devel mailing list
>> Gluster-devel at gluster.org
>> http://www.gluster.org/mailman/listinfo/gluster-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gluster.org/pipermail/gluster-devel/attachments/20160223/11ca9d94/attachment.html>


More information about the Gluster-devel mailing list