1 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 45. Samba Performance Tuning</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="The Official Samba 3.0.x HOWTO and Reference Guide"><link rel="up" href="Appendix.html" title="Part VI. Reference Section"><link rel="prev" href="Other-Clients.html" title="Chapter 44. Samba and Other CIFS Clients"><link rel="next" href="ch-ldap-tls.html" title="Chapter 46. LDAP and Transport Layer Security"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 45. Samba Performance Tuning</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Other-Clients.html">Prev</a> </td><th width="60%" align="center">Part VI. Reference Section</th><td width="20%" align="right"> <a accesskey="n" href="ch-ldap-tls.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="speed"></a>Chapter 45. Samba Performance Tuning</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Paul</span> <span class="orgname">Dundee Limb Fitting Centre</span> <span class="surname">Cochrane</span></h3><div class="affiliation"><span class="orgname">Dundee Limb Fitting Centre<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:paulc@dth.scot.nhs.uk">paulc@dth.scot.nhs.uk</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="orgname">The Samba Team</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="orgname">Samba Team</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jht@samba.org">jht@samba.org</a>></code></p></div></div></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="speed.html#id2690681">Comparisons</a></span></dt><dt><span class="sect1"><a href="speed.html#id2690720">Socket Options</a></span></dt><dt><span class="sect1"><a href="speed.html#id2690817">Read Size</a></span></dt><dt><span class="sect1"><a href="speed.html#id2690861">Max Xmit</a></span></dt><dt><span class="sect1"><a href="speed.html#id2690909">Log Level</a></span></dt><dt><span class="sect1"><a href="speed.html#id2690933">Read Raw</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691000">Write Raw</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691052">Slow Logins</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691076">Client Tuning</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691097">Samba Performance Problem Due to Changing Linux Kernel</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691188">Corrupt tdb Files</a></span></dt><dt><span class="sect1"><a href="speed.html#id2691284">Samba Performance is Very Slow</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690681"></a>Comparisons</h2></div></div></div><p>
|
---|
2 | The Samba server uses TCP to talk to the client, so if you are
|
---|
3 | trying to see if it performs well, you should really compare it to
|
---|
4 | programs that use the same protocol. The most readily available
|
---|
5 | programs for file transfer that use TCP are ftp or another TCP-based
|
---|
6 | SMB server.
|
---|
7 | </p><p>
|
---|
8 | If you want to test against something like an NT or Windows for Workgroups server, then
|
---|
9 | you will have to disable all but TCP on either the client or
|
---|
10 | server. Otherwise, you may well be using a totally different protocol
|
---|
11 | (such as NetBEUI) and comparisons may not be valid.
|
---|
12 | </p><p>
|
---|
13 | Generally, you should find that Samba performs similarly to ftp at raw
|
---|
14 | transfer speed. It should perform quite a bit faster than NFS,
|
---|
15 | although this depends on your system.
|
---|
16 | </p><p>
|
---|
17 | Several people have done comparisons between Samba and Novell, NFS, or
|
---|
18 | Windows NT. In some cases Samba performed the best, in others the worst. I
|
---|
19 | suspect the biggest factor is not Samba versus some other system, but the
|
---|
20 | hardware and drivers used on the various systems. Given similar
|
---|
21 | hardware, Samba should certainly be competitive in speed with other
|
---|
22 | systems.
|
---|
23 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690720"></a>Socket Options</h2></div></div></div><p>
|
---|
24 | There are a number of socket options that can greatly affect the
|
---|
25 | performance of a TCP-based server like Samba.
|
---|
26 | </p><p>
|
---|
27 | The socket options that Samba uses are settable both on the command
|
---|
28 | line with the <code class="option">-O</code> option and in the <code class="filename">smb.conf</code> file.
|
---|
29 | </p><p>
|
---|
30 | The <a class="link" href="smb.conf.5.html#SOCKETOPTIONS" target="_top">socket options</a> section of the <code class="filename">smb.conf</code> manual page describes how
|
---|
31 | to set these and gives recommendations.
|
---|
32 | </p><p>
|
---|
33 | Getting the socket options correct can make a big difference to your
|
---|
34 | performance, but getting them wrong can degrade it by just as
|
---|
35 | much. The correct settings are very dependent on your local network.
|
---|
36 | </p><p>
|
---|
37 | The socket option TCP_NODELAY is the one that seems to make the biggest single difference
|
---|
38 | for most networks. Many people report that adding
|
---|
39 | <a class="link" href="smb.conf.5.html#SOCKETOPTIONS" target="_top">socket options = TCP_NODELAY</a>
|
---|
40 | doubles the read performance of a Samba drive. The best explanation I have seen for
|
---|
41 | this is that the Microsoft TCP/IP stack is slow in sending TCP ACKs.
|
---|
42 | </p><p>
|
---|
43 | There have been reports that setting <em class="parameter"><code>socket options = SO_RCVBUF=8192</code></em> in smb.conf
|
---|
44 | can seriously degrade Samba performance on the loopback adaptor (IP Address 127.0.0.1). It is strongly
|
---|
45 | recommended that before specifying any settings for <em class="parameter"><code>socket options</code></em>, the effect
|
---|
46 | first be quantitatively measured on the server being configured.
|
---|
47 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690817"></a>Read Size</h2></div></div></div><p>
|
---|
48 | The option <a class="link" href="smb.conf.5.html#READSIZE" target="_top">read size</a> affects the overlap of disk
|
---|
49 | reads/writes with network reads/writes. If the amount of data being
|
---|
50 | transferred in several of the SMB commands (currently SMBwrite, SMBwriteX, and
|
---|
51 | SMBreadbraw) is larger than this value, then the server begins writing
|
---|
52 | the data before it has received the whole packet from the network, or
|
---|
53 | in the case of SMBreadbraw, it begins writing to the network before
|
---|
54 | all the data has been read from disk.
|
---|
55 | </p><p>
|
---|
56 | This overlapping works best when the speeds of disk and network access
|
---|
57 | are similar, having little effect when the speed of one is much
|
---|
58 | greater than the other.
|
---|
59 | </p><p>
|
---|
60 | The default value is 16384, but little experimentation has been
|
---|
61 | done as yet to determine the optimal value, and it is likely that the best
|
---|
62 | value will vary greatly between systems anyway. A value over 65536 is
|
---|
63 | pointless and will cause you to allocate memory unnecessarily.
|
---|
64 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690861"></a>Max Xmit</h2></div></div></div><p>
|
---|
65 | At startup the client and server negotiate a <em class="parameter"><code>maximum transmit</code></em> size,
|
---|
66 | which limits the size of nearly all SMB commands. You can set the
|
---|
67 | maximum size that Samba will negotiate using the <a class="link" href="smb.conf.5.html#MAXXMIT" target="_top">max xmit</a> option
|
---|
68 | in <code class="filename">smb.conf</code>. Note that this is the maximum size of SMB requests that
|
---|
69 | Samba will accept, but not the maximum size that the client will accept.
|
---|
70 | The client maximum receive size is sent to Samba by the client, and Samba
|
---|
71 | honors this limit.
|
---|
72 | </p><p>
|
---|
73 | It defaults to 65536 bytes (the maximum), but it is possible that some
|
---|
74 | clients may perform better with a smaller transmit unit. Trying values
|
---|
75 | of less than 2048 is likely to cause severe problems.
|
---|
76 | In most cases the default is the best option.
|
---|
77 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690909"></a>Log Level</h2></div></div></div><p>
|
---|
78 | If you set the log level (also known as <a class="link" href="smb.conf.5.html#DEBUGLEVEL" target="_top">debug level</a>) higher than 2,
|
---|
79 | then you may suffer a large drop in performance. This is because the
|
---|
80 | server flushes the log file after each operation, which can be quite
|
---|
81 | expensive.
|
---|
82 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2690933"></a>Read Raw</h2></div></div></div><p>
|
---|
83 | The <a class="link" href="smb.conf.5.html#READRAW" target="_top">read raw</a> operation is designed to be an optimized, low-latency
|
---|
84 | file read operation. A server may choose to not support it,
|
---|
85 | however, and Samba makes support for <a class="link" href="smb.conf.5.html#READRAW" target="_top">read raw</a> optional, with it
|
---|
86 | being enabled by default.
|
---|
87 | </p><p>
|
---|
88 | In some cases clients do not handle <a class="link" href="smb.conf.5.html#READRAW" target="_top">read raw</a> very well and actually
|
---|
89 | get lower performance using it than they get using the conventional
|
---|
90 | read operations, so you might like to try <a class="link" href="smb.conf.5.html#READRAW" target="_top">read raw = no</a> and see what happens on your
|
---|
91 | network. It might lower, raise, or not affect your performance. Only
|
---|
92 | testing can really tell.
|
---|
93 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691000"></a>Write Raw</h2></div></div></div><p>
|
---|
94 | The <a class="link" href="smb.conf.5.html#WRITERAW" target="_top">write raw</a> operation is designed to be an optimized, low-latency
|
---|
95 | file write operation. A server may choose to not support it, however, and Samba makes support for
|
---|
96 | <a class="link" href="smb.conf.5.html#WRITERAW" target="_top">write raw</a> optional, with it being enabled by default.
|
---|
97 | </p><p>
|
---|
98 | Some machines may find <a class="link" href="smb.conf.5.html#WRITERAW" target="_top">write raw</a> slower than normal write, in which
|
---|
99 | case you may wish to change this option.
|
---|
100 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691052"></a>Slow Logins</h2></div></div></div><p>
|
---|
101 | Slow logins are almost always due to the password checking time. Using
|
---|
102 | the lowest practical <a class="link" href="smb.conf.5.html#PASSWORDLEVEL" target="_top">password level</a> will improve things.
|
---|
103 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691076"></a>Client Tuning</h2></div></div></div><p>
|
---|
104 | Often a speed problem can be traced to the client. The client (for
|
---|
105 | example Windows for Workgroups) can often be tuned for better TCP
|
---|
106 | performance. Check the sections on the various clients in
|
---|
107 | <a class="link" href="Other-Clients.html" title="Chapter 44. Samba and Other CIFS Clients">Samba and Other CIFS Clients</a>.
|
---|
108 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691097"></a>Samba Performance Problem Due to Changing Linux Kernel</h2></div></div></div><p>
|
---|
109 | A user wrote the following to the mailing list:
|
---|
110 | </p><div class="blockquote"><blockquote class="blockquote"><p>
|
---|
111 | <a class="indexterm" name="id2691111"></a>
|
---|
112 | <a class="indexterm" name="id2691118"></a>
|
---|
113 | I am running Gentoo on my server and Samba 2.2.8a. Recently I changed kernel versions from
|
---|
114 | <code class="filename">linux-2.4.19-gentoo-r10</code> to <code class="filename">linux-2.4.20-wolk4.0s</code>. Now I have a
|
---|
115 | performance issue with Samba. Many of you will probably say, “<span class="quote">Move to vanilla sources!</span>” Well, I
|
---|
116 | tried that and it didn't work. I have a 100MB LAN and two computers (Linux and Windows 2000). The Linux server
|
---|
117 | shares directories with DivX files, the client (Windows 2000) plays them via LAN. Before, when I was running
|
---|
118 | the 2.4.19 kernel, everything was fine, but now movies freeze and stop. I tried moving files between the
|
---|
119 | server and Windows, and it is terribly slow.
|
---|
120 | </p></blockquote></div><p>
|
---|
121 | The answer he was given is:
|
---|
122 | </p><div class="blockquote"><blockquote class="blockquote"><p>
|
---|
123 | <a class="indexterm" name="id2691160"></a>
|
---|
124 | <a class="indexterm" name="id2691167"></a>
|
---|
125 | <a class="indexterm" name="id2691174"></a>
|
---|
126 | Grab the mii-tool and check the duplex settings on the NIC. My guess is that it is a link layer issue, not an
|
---|
127 | application layer problem. Also run ifconfig and verify that the framing error, collisions, and so on, look
|
---|
128 | normal for ethernet.
|
---|
129 | </p></blockquote></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691188"></a>Corrupt tdb Files</h2></div></div></div><p>
|
---|
130 | <a class="indexterm" name="id2691196"></a>
|
---|
131 | <a class="indexterm" name="id2691203"></a>
|
---|
132 | <a class="indexterm" name="id2691210"></a>
|
---|
133 | Our Samba PDC server has been hosting three TB of data to our 500+ users [Windows NT/XP] for the last three
|
---|
134 | years using Samba without a problem. Today all shares went very slow. Also, the main smbd kept spawning new
|
---|
135 | processes, so we had 1600+ running SMDB's (normally we average 250). It crashed the SUN E3500 cluster twice.
|
---|
136 | After a lot of searching, I decided to <code class="literal">rm /var/locks/*.tdb</code>. Happy again.
|
---|
137 | </p><p>
|
---|
138 | <span class="emphasis"><em>Question:</em></span> Is there any method of keeping the *.tdb files in top condition, or
|
---|
139 | how can I detect early corruption?
|
---|
140 | </p><p>
|
---|
141 | <a class="indexterm" name="id2691241"></a>
|
---|
142 | <a class="indexterm" name="id2691248"></a>
|
---|
143 | <span class="emphasis"><em>Answer:</em></span> Yes, run <code class="literal">tdbbackup</code> each time after stopping nmbd and before starting nmbd.
|
---|
144 | </p><p>
|
---|
145 | <span class="emphasis"><em>Question:</em></span> What I also would like to mention is that the service latency seems
|
---|
146 | a lot lower than before the locks cleanup. Any ideas on keeping it top notch?
|
---|
147 | </p><p>
|
---|
148 | <span class="emphasis"><em>Answer:</em></span> Yes. Same answer as for previous question!
|
---|
149 | </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2691284"></a>Samba Performance is Very Slow</h2></div></div></div><p>
|
---|
150 | <a class="indexterm" name="id2691292"></a>
|
---|
151 | A site reported experiencing very baffling symptoms with MYOB Premier opening and
|
---|
152 | accessing its data files. Some operations on the file would take between 40 and
|
---|
153 | 45 seconds.
|
---|
154 | </p><p>
|
---|
155 | <a class="indexterm" name="id2691305"></a>
|
---|
156 | <a class="indexterm" name="id2691312"></a>
|
---|
157 | It turned out that the printer monitor program running on the Windows
|
---|
158 | clients was causing the problems. From the logs, we saw activity coming
|
---|
159 | through with pauses of about 1 second.
|
---|
160 | </p><p>
|
---|
161 | <a class="indexterm" name="id2691325"></a>
|
---|
162 | <a class="indexterm" name="id2691332"></a>
|
---|
163 | Stopping the monitor software resulted in the networks access at normal
|
---|
164 | (quick) speed. Restarting the program caused the speed to slow down
|
---|
165 | again. The printer was a Canon LBP-810 and the relevant task was
|
---|
166 | something like CAPON (not sure on spelling). The monitor software
|
---|
167 | displayed a "printing now" dialog on the client during printing.
|
---|
168 | </p><p>
|
---|
169 | We discovered this by starting with a clean install of Windows and
|
---|
170 | trying the application at every step of the installation of other software
|
---|
171 | process (we had to do this many times).
|
---|
172 | </p><p>
|
---|
173 | Moral of the story: Check everything (other software included)!
|
---|
174 | </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Other-Clients.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Appendix.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch-ldap-tls.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 44. Samba and Other CIFS Clients </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 46. LDAP and Transport Layer Security</td></tr></table></div></body></html>
|
---|