On Mon, 01 Jun 2009 19:02:11 +0200, Mark Weghorst <mark at 
productioninsight.com> wrote:

> I have a HPC application that consists of a compute grid of Linux systems 
> which read a common set of data from read-only NFS mounts and then use that 
> data to produce computations which are consumed by an IBM mainframe.
>
> I have run into some problems with the Linux kernel and I am wondering if I 
> would have a similar issue on OSx86.  There is significant work involved in a 
> port, so I would like to get an idea if I would have the same issues prior to 
> undertaking this development effort.
>
> The NFS workload is 100% read-only (RO mount) and consists of the following:
>
> GETATTR 31.34%
> LOOKUP 6.61%
> [b] ACCESS 44.15% [/b]
> READ 11.98%
> READDIRPLUS 5.21%
>
> The problem is that there is considerable cost (in the deployment and 
> maintenance of NAS appliances)so each and every NFS operation has a cost 
> associated with it.  [b] In our case 44% of our NFS operations are 
> unnecessary, as we don't use any POSIX ACL's in our application.  By 
> eliminating these RPC calls, we will save a considerable amount of money on 
> storage [/b]
>
> If we were able to disable the ACCESS RPC, then that would help us to get a 
> higher density of compute nodes to NAS.  In the Linux 2.4 kernels there was a 
> "noacl" > option that would suppress these calls, and this is exactly what we 
> need for our application.  However, that was dropped in the 2.6 kernels, and 
> will not be reintroduced.
>
> With that context, I have a few questions about the OS NFS client:
>
> 1) Does the OS NFS client support a way to "suppress" ACCESS calls?

not that I am aware of.

but I'm not quite sure I understand your point of ACLs along with the ACCESS 
procedure, even if you do not use ACLs
on the servers file system, the client will and has to perform OTW permission 
checking when acessing objects on
the server, and that is what is being done with ACCESS.

however, if you use NFS v4, which is the default in Solaris since Solaris 10 
anyways, you will get reduced use
of ACCESS operations. that is because with V4, there's the new OPEN procedure, 
and the server can and will verify 
access permissions at the time it receives the OPEN for the file from the 
client. the client may still use
ACCESS though in some situations, eg. when the application on the client 
directly invokes the access(2) system call.

> 2) Does the OS NFS client have a memory cache similar to file system buffers? 
>  Our application does a huge amount of disk I/O and we currently use the NFS 
> memory > cache in the Linux kernel to reduce our NFS ops/sec.  For reference 
> 32GB of RAM is enough to prevent 95% of disk I/O

the Solaris NFS client does use the page cache to cache pages involved in its 
I/O operations. (NB. this has nothing todo with the buffer cache)

> 3) Does the OS NFS client support an attribute cache, and the nocto option?

yes, see mount_nfs(1M)

         nocto

             Do not perform the normal close-to-open consistency.
             When  a file is closed, all modified data associated
             with the file is flushed to the server and not  held
             on  the  client.  When  a  file is opened the client
             sends a  request  to  the  server  to  validate  the
             client's  local  caches.  This  behavior  ensures  a
             file's consistency across multiple NFS clients. When
             -nocto is in effect, the client does not perform the
             flush on  close  and  the  request  for  validation,
             allowing  the possiblity of differences among copies
             of the same file as stored on multiple clients.

             This option can be used where it can  be  guaranteed
             that  accesses  to  a specified file system are made
             from only one client and  only  that  client.  Under
             such  a  condition,  the  effect  of -nocto can be a
             slight performance gain.


cheers
-- 
frankB


Reply via email to