On Fri, Jun 10, 2011 at 3:23 PM, Benny Halevy <benny@xxxxxxxxxx> wrote: > > A simple algorithm I can suggest is: > - on initialization, calculate and save, per layout driver > - maximum layout size I must be misunderstanding something. Layout size has nothing to do with io size (other than the obvious fact that you want the layout > io). I don't know about the object driver, but for both the file and block drivers the client wants as much as the server will give it. Fred > - take into account csr_fore_chan_attrs.ca_maxresponsesize and possible other parameters > - keep a working copy of the maximum value and the calculated copy. > - alignment value. > - on miss, see if there's an adjacent layout segment in cache > - if found, ask for twice the found segment size, up to the maximum value, > aligned on the alignment value. > - if the server returns less the layoutget range, keep note of the returned length > (but not adjust maximum yet, as the server may return a short segment for various > reasons) > - if the server is consistent about returning less than was asked, adjust the > - working copy of the maximum length > - if the maximum was adjusted try bumping it up after X (TBD) layoutgets or T seconds > to see if that was just due to high load or conflicts on the server > - on any error returned for LAYOUTGET reset the algorithm parameters > - on session reestablishment recalculate maximums. > > Benny > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html