<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/NFSserver"/>

<title>NFSserver</title>
<modified>2006-06-17T08:24:32Z</modified>
<author></author>
<entry>
<title>Another TODO list : nfsd</title>
<issued>2006-06-17T08:24:32Z</issued>
<modified>2006-06-17T08:24:32Z</modified>
<id>http://neil.brown.name/blog/20060617082432</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20060617082432"/>
<content type="text/html" mode="escaped">




&lt;p&gt;&lt;br&gt;&lt;br&gt;I love todo-lists.  They are liberating.  If you don't know what to
work on next, you write a TODO list.  Then you just work through the
things on the list.  Or maybe you don't, but having written them all
down, they no longer rattle around in your brain and distract you from
more important things.

&lt;p&gt;Anyway, to the point.  Someone recently asked me what my priorities
for the Linux NFS server were and while I'm not spending a lot of time
on it at the moment, there are things that I would like to see done,
so I wrote a little todo list.  And having written it, I might as well
share it.  So here it is...



&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;
   auto-adjust the number of nfsd threads.  I'd really like the
   sysadmin *not* to have to choose a number, but it should still be
   possible to set a maximum.
   I imagine:
  &lt;ul&gt;&lt;li&gt;
      slow growth when there is high load and we have never had this
       many running before &lt;/li&gt;&lt;/ul&gt;
  &lt;ul&gt;&lt;li&gt;
      slow decay in numbers when &amp;lt;50% are in use
      fast growth when we have dropped below the highwater mark and
           load is high
	   &lt;/li&gt;&lt;/ul&gt;
   &lt;ul&gt;&lt;li&gt;
      A maximum that is somehow based on the requested number of
         threads
	 &lt;/li&gt;&lt;/ul&gt;
   &lt;ul&gt;&lt;li&gt;
      Some way of measuring if extra threads in actually improving
        throughput, and feed that in to the growth calculations.
     &lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;
   Find a way to overcome the current bottle neck when replying to
   requests on a udp socket.
   &lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;ul&gt;&lt;li&gt;
  explore whether it would help to make the scheduling of 
    nfsd threads more SMP (and NUMA) aware.
    &lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;ul&gt;&lt;li&gt;
   Finalise and implement upcall changes to support new NFSv4 features
   like auth-type selection and fs_locations
   &lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;ul&gt;&lt;li&gt;
 make exporting of filesystem via NFSv4 work more smoothly (mountd
   should automatically create the 'virtual filesystem' thing).
   &lt;/li&gt;&lt;/ul&gt;
   


&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20060617082432&gt;(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>Better FSID management</title>
<issued>2004-06-08T15:24:45Z</issued>
<modified>2004-06-08T15:24:45Z</modified>
<id>http://neil.brown.name/blog/20040608152445</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040608152445"/>
<content type="text/html" mode="escaped">
An NFS filehandle stores information to identify a filesystem (or directory in the filesystem that is the export point) and a file within that filesystem.

&lt;p&gt;Identifying the file within the filesystem is now handled fairly well, but there are problems with identifying the filesystem.
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040608152445&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>Linux NFS server</title>
<issued>2004-06-07T13:28:17Z</issued>
<modified>2004-06-07T13:28:17Z</modified>
<id>http://neil.brown.name/blog/20040607132817</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040607132817"/>
<content type="text/html" mode="escaped">
Since mid 2000 I have been the official maintainer of the Linux NFS server - the in-kernel one rather than the user-space NFS server.  A lot of progress has been made since then, but there is still work to do.

&lt;p&gt;The following entries address various needs, how to approach them, and whether they have been addresses.

&lt;p&gt;There should probably be a link to some patches here.  But there isn't.  Sorry about that.
Maybe there will be soon when I get that more organised.

&lt;p&gt;&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040607132817&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>Better read-ahead management and other file-open issues</title>
<issued>2004-05-13T10:01:20Z</issued>
<modified>2004-05-13T10:01:20Z</modified>
<id>http://neil.brown.name/blog/20040513100120</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040513100120"/>
<content type="text/html" mode="escaped">
NFS (prior to V4) does not have a concept of opening and closing a file. 
The Linux VFS does include that concept.
So the NFS server has to open the file before a READ or WRITE operation, and close it afterwards.

&lt;p&gt;Some funcitonality in filesystems and in the VFS assumes that the open/close requests that are passed down
correspond to opens and closes by the application, and that a particular &amp;quot;file&amp;quot; structure belongs to a particular application (possibly a group of processes).  Thus he current open/IO/close approach does not give good information to filesystems
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040513100120&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>More efficient COMMIT</title>
<issued>2004-05-12T17:17:38Z</issued>
<modified>2004-05-12T17:17:38Z</modified>
<id>http://neil.brown.name/blog/20040512171738</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040512171738"/>
<content type="text/html" mode="escaped">
The COMMIT NFSv4 (and NFSv4) request asked to sync a range of a file.  However the Linux VFS only
allows a whole file to by synced
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040512171738&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>RPCSEC/GSS</title>
<issued>2004-05-12T17:14:42Z</issued>
<modified>2004-05-12T17:14:42Z</modified>
<id>http://neil.brown.name/blog/20040512171442</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040512171442"/>
<content type="text/html" mode="escaped">
It would be really nice to have good RPCSEC/GSS support in nfs.
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040512171442&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>IPv6 support</title>
<issued>2004-05-12T13:40:00Z</issued>
<modified>2004-05-12T13:40:00Z</modified>
<id>http://neil.brown.name/blog/20040512134000</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040512134000"/>
<content type="text/html" mode="escaped">
It is possible that IPv6 support would be useful in nfs.
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040512134000&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>SMP afinity for threads and sockets</title>
<issued>2004-05-12T13:37:07Z</issued>
<modified>2004-05-12T13:37:07Z</modified>
<id>http://neil.brown.name/blog/20040512133707</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040512133707"/>
<content type="text/html" mode="escaped">
There is probably some value in assigning some processor or NUMA-node affinity to nfsd server threads and possibly to sockets as well
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040512133707&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>
<entry>
<title>Dynamic thread count</title>
<issued>2004-05-12T11:56:01Z</issued>
<modified>2004-05-12T11:56:01Z</modified>
<id>http://neil.brown.name/blog/20040512115601</id>
<link rel="alternate" type="text/html" href="http://neil.brown.name/blog/20040512115601"/>
<content type="text/html" mode="escaped">
The number of nfsd threads is currently static, though it can be changed from user-space.

&lt;p&gt;There is value is having a dynamic number of threads.  It means that the system administrator does not need to pick a number and hope it works.  Even if the sysadmin is very clever, there will often be either too many threads, wasting memory, or too few causing uneeded delays.  Having a dynamic number of threads means that the number can follow load.
&lt;p&gt;&lt;a href=http://neil.brown.name/blog/20040512115601&gt;read more...(No comments)&lt;/a&gt;</content>
</entry>

</feed>

