<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Console'; font-size:12pt; font-weight:400; font-style:normal;">On Wednesday May 6 2009, Till Straumann wrote:<br>
> A few hints (NFS read operation only; write is very similar)<br>
><br>
> - rtems NFS implementation is fully synchronous (no read-ahead,<br>
>   i.e., request block X, wait until block X received). Probably your<br>
>   raw UDP communication is similar but if it does implement<br>
>   read-ahead / caching then expect significant slowdown when<br>
>   using NFS.<br>
Thanks for the tip, I shall take this into account.<br>
But most of the time we do writing, not reading...<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> - For every block read, NFS requires XDR-decoding a protocol<br>
>   header. This overhead is relatively small, especially if a large<br>
>   block size is used (you want 8k / max. allowed by UDP). A large<br>
>   block size also speeds up synchronous operation.<br>
Yes, but as i was able to understand from the last e-mails on the list, the Jumbo packets are not supported "out-of-the-box" today. Or am I wrong?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> - The payload data is copied verbatim (w/o any byte-swapping<br>
>   to the user's buffer). If the 'xdr_mbuf' stream is used then<br>
>   the cost is similar to using normal UDP (copying from mbufs<br>
>   into user buffer) -- otherwise data are copied twice (from<br>
>   mbufs to NFS memory buffer, then again from there to user<br>
>   buffer.<br>
>   The behavior is compile-time configurable (nfsclient/src/rpcio.c)<br>
>   -- by default a second copy operation is avoided.<br>
Great. Where can I read about all this?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> -> If you use a large block size, read relatively large files<br>
>     (>> NFS protocol header) and your current implementation<br>
>     does not implement read-ahead/caching then I'd be surprised<br>
>     if NFS is a lot slower. Nevertheless, you want to run a few<br>
>     tests...<br>
Can you say something about "writes"? I suppose the same, yes?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>The last question - I need to be the NFS server (not client). Can you recommend something for this?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Till, thank you very much for your time.<br>
-- <br>
Leon<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p></body></html>