To all:

While updating our Samba installation from 2.2.5 to 3.0.25b, I found that Samba's performance was severely degraded. A 1 gig test file with random text in it would take about 2:15 to copy using the old 2.2.5 smbd, but the same file would take 5-6 minutes to copy with a freshly compiled version.

I ran truss on smbd while the file copy was taking place, and found that the utime() call was taking up most of the system time. I then ran truss on the 2.2.5 smbd, and found that there were no utime() calls at all. I went to the archives, downloaded and built version 2.2.12, and found that the performance was the same as 2.2.5. Same with version 3.0.0, and version 3.0.10.

However, version 3.0.11 is where the performance problems begin. So something related to utime() changed between versions 3.0.10 and 3.0.11, and this change has a major impact on the Solaris 8 build, GCC 2.95.3.

Here's the truss results for each version. First, 3.0.11, which takes about 6 minutes to run (Note: Calls with zero total seconds are snipped):

syscall              seconds   calls
------------------------------------
read                   17.89  392497
time                     .36   17632
utime                 179.76   17479
getgid                   .01      96
fcntl                   2.43   52505
poll                     .55   17523
pwrite64                6.48   17477
send                     .95   17524

In this run, 85% of the system calls are the utime() call. And here's the same 1G file copy using version 3.0.10:

syscall              seconds   calls
read                   15.03  390972
close                    .20       9
time                     .31   17603
utime                    .01       1
fcntl                   1.99   52483
poll                     .52   17507
stat64                   .24      36
fstat64                  .11      19
pwrite64                5.83   17477
open64                   .02      10
send                     .53   17507

Notice that the utime() call is almost nonexistent (1 call). This balance of reads and writes is more of what I'd expect out of a Samba transfer.

I looked through the WHATSNEW.txt file in the 3.0.11 distribution, but couldn't find an obvious answer to this problem (if it *is* a problem). So I'm throwing this out to the group: What changed in version 3.0.11 that caused Samba to spend 85% of its time in a utime() system call?

--
# Scott Cokely                 #  The Internet interprets censorship
# (949)231-3742                #  as damage, and routes AROUND it.
# include "std_disclaimer.pl"; #------------------------------------
#               Quidquid latine dictum sit, altum viditur.
--
To unsubscribe from this list go to the following URL and read the
instructions:  https://lists.samba.org/mailman/listinfo/samba

Reply via email to