[jcifs] Performance Issue with jcifs and NetApp

André Warnier aw at ice-sa.com
Wed May 29 08:59:45 MDT 2013


Torsten Uhr wrote:
> Hi André,
> 
> thanks for Your quick reply.
> 
>> Is that what happens ?
> Exactly.
> 
>> "NetApp fileserver" (whatever that is),
> see: http://www.netapp.com/de/products/protocols/nas/cifs.aspx
> 
>> do you have any way, on the NetApp server, to trace what is going on and see what the difference is when accessing these files from the one or the other type of client ?
> 
> I have pleased our customer to contact their operations to check out for any logs. At the moment their are only connection information but no logs.
> 
>> Or alternatively, on the client system, to trace what is going on between that client and that NetApp server ?
> I have told our customer to set the property 'jcifs.util.loglevel=10'. Are there any other tasks to enable logging in jcifs?
> If i receive any further information, I will send it to You.

Send it to the list, like before.  I am not really an expert here, I was just trying to 
define the issue clearly.

If the mounting of the CIFS filesystem works, and the access through that mountpoint is 
fast, that seems to eliminate any fundamental issue like network problems, or DNS 
problems, or authentication problems.

So there must be something quite specific that slows down things when you access the files 
through the jcifs library.  Which on the face of it looks a bit strange, because as far as 
I know the CIFS filesystem implementation under Linux is using much of the same codebase 
from samba.org.
In that area, I am a bit over my head unfortunately.

I would float a suspicion, but do not by any means consider this as a well-informed 
comment : maybe the way in which you are doing the access through the jcifs library is 
forcing it to create new connections all the time, resulting in a new authentication at 
each access ?  That would probably slow down things quite a bit.

The right tool to find out would be something like Wireshark, and get a network trace 
while you are reading a file (slowly) through the jcifs library.
But you could just start such a (long) transfer, and then do a "netstat" on your Linux 
client.  That should show at least the socket connections in use for that transfer.
You are looking for port numbers :137, :138, :139 and :445.
For example :
netstat -pn | grep -P ":(445|137|138|139)\s"


More information about the jCIFS mailing list