[jcifs] speed writing to a file?
Frank Xia
FXia at esri.com
Sat Nov 17 07:17:58 EST 2001
Mike,
Thanks for your response. I cut and paste my testing results here for your
reference,
jCIFS time (ms) File system time (ms) (\\desktop2\public)
501 60
511 50
481 90
500 60
500 90
461 80
491 50
491 100
491 60
451 60
To local disk
jICFS time (ms)
6459
6459
6439
Please note that I was running the testing in a laptop that writes to a
desktop in the same network segment. Both machines are running Windows 2000.
Of course, I didn't change any default settings since I just started to play
with it and not aware of how to do it yet. My part of the application will
mostly generate small JEPG/PNG etc image files (we do have other part of the
application will read much bigger files from disk). I am using
System.currentTimeMIllis() method to get the time before and after the
method call to generateJPEGSmb().
Thanks
Frank
-----Original Message-----
From: Michael B. Allen [mailto:mballen at erols.com]
Sent: Friday, November 16, 2001 3:10 PM
To: Frank Xia
Cc: jcifs at lists.samba.org
Subject: Re: [jcifs] speed writing to a file?
On Fri, 16 Nov 2001 12:31:12 -0500
Frank Xia <FXia at esri.com> wrote:
> All,
> I just downloaded the jCIFS 0.51 and felt it's really easy to use but I
got
> some questions about its speed. I tested with my own application running
in
> one desktop and write a file to another desktop. The speed to write a 16K
> JPEG file (smb://desktop2/public/test.jpeg) comparing with direct writing
> through mapping such as \\desktop2\public\test.jpeg is at least 5 times
> slower. Is this about right?
> My second question is that why the speed to write a file to a local disk
> (smb://desktop1/public/test.jpeg) even worse than to a disk in another
> machine. Did I miss something?
> Any idea?
> Thanks a lot
> Frank
Wow. That's pretty awful. What operating system is that? Here's what
I'm seeing on Linux talking to NT 4.0 sp3:
Wrote a 2.2 MB file in 33 seconds.
$ java -Djcifs.properties=../miallen.prp Put smb://angus/temp/mb22.bin
22577838 bytes transfered in 33 seconds at 684Kbytes/sec
The smbfs kernel smb client wrote the same file in 38 seconds.
# time /bin/cp mb22.bin /mnt
real 0m38.676s
user 0m0.050s
sys 0m2.320s
Writing it to the local machine to Samba took 5 seconds.
$ java -Djcifs.properties=../miallen.prp Put smb://nano/tmp/mb22.bin
22577838 bytes transfered in 5 seconds at 4515Kbytes/sec
Reading the file is admittedly faster. Took 22 seconds instead of 33.
$ java -Djcifs.properties=../miallen.prp Get smb://angus/temp/mb22.bin
22577838 bytes transfered in 22 seconds at 1026Kbytes/sec
Reading the file from the local machine is a snap.
$ java -Djcifs.properties=../miallen.prp Get smb://nano/tmp/mb22.bin
22577838 bytes transfered in 2 seconds at 11288Kbytes/sec
Now, admittedly there is an issue with writing because of a buffer
copy going on in the client whereas when reading there are no buffer
copies. One thing I'm not quite sure about is what the optimal
snd_buf_siz should be. I have played with this value in the past with
mixed results. You would think making it really large like 64K would be
wise. The default is 1300 bytes (below MTU to prevent fragmentation). Here
are some numbers:
snd_buf_size time to write a 22mb file
1300 33
4096 28
16384 27
65536 27
Perhaps you should try a larger file? How are you timing this stuff?
Mike
More information about the jcifs
mailing list