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.
Volker Lendecke
2007-Jul-31 05:33 UTC
[Samba] Performance problem with utime() on Solaris 8
On Mon, Jul 30, 2007 at 03:34:54PM -0700, Scott Cokely wrote:> 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.It might be possible that since then we implement some SMB call differently from what we did before. We'd need a debug level 10 log or a network trace to see what the client does. Volker -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://lists.samba.org/archive/samba/attachments/20070731/9f7346b8/attachment.bin
Reasonably Related Threads
- 100% random writes coming out as 50/50 reads/writes
- high imap load on large folders
- DO NOT REPLY [Bug 5506] New: support utime differences at runtime, not configure/build time
- Performance issues after samba update (utime?)
- utime() failed with index file [...] Operation not permitted