[Samba] samba + xp "Delayed Write Failed"

Kosa Attila atkosa at chello.hu
Thu Jul 7 09:53:39 GMT 2005


Hello!
Hardver: Windows XP Compaq Proliant DL360, Linux Compaq Proliant DL380.
2 pieces of processors Intel Xeon 3,2GHz, 2GB RAM, 6 gigabit interface
(2 tg3, 4 e1000), Debian Woody, 2.4.31 vanilla kernel.  6 U320 SCSI
15krpm HDD, 2 HDD RAID1 system, 4 HDD RAID1+0 data.  Every network cards
connect at speed of 1000MB full duplex, with XP crosscable (but we've
tried with gigabit switch, too, we have tried both types of cards).  In
the XP's (there are more of them) there are 2 pieces of interface at
gigabit speed, one of them is connected to the network of PDC, the other
is connected to the cards of the above mentioned computer with
crosscable.  There is also a Windows NT 4.0 SP6 server with gigabit
card, too.

Surroundings: Windows domain, samba PDC (2.2.8a) that gets users from
LDAP.  The Linux computer belongs to the domain, the LDAP-server is set
to it in libnss-ldap.conf file (the "getent passwd" sees the users and
groups), and the samba is able to authentify the users with the help of
the options "security = server, password server = IP.address", there's
no problem with this. DL380 the samba's version is: 2.2.3a-15.  Its
speed is convencing, the program mentioned below communicates with the
server at a speed of 140-150000kbit/s (measuring with iptraf, Incoming
~90000, Outgoing ~50000), by the netwatch of Windows the utilization of
the network sometimes reaches the 19%.  When I make run the program
below onto files on an XP, then by the network of Windows the
utilization of the net is never higher than 15%.  The utilization of the
processor on the XP is above 50% while the program is running.

There's a program that - when running on the XP - reads from mapped
network drive and writes back there.  It reads certain data and
generates different files from the data.  These files are relatively big
size (both the read and written ones), now the biggest is the size of
400MB.  However undefinable times we get the next error message in
Windows: "Delayed Write Failed".

This time a note gets also into the diary of the events, its the status
code is: c000020c (see later why it's important).  Searching in the
Microsoft's Knowledge Base we've found these messages that are like the
error message above:

http://support.microsoft.com/default.aspx?scid=kb;en;321733
- here the error message is the same but the status code is not.  It
seems that the SP2 solves this problem on XP, we've looked through the
mentioned things and everything is OK, they are set up so that they
should work.

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q293842
- the error message is similar, the status code is the same, too but by
Microsoft this error doesn't happen on XP.

http://www.tangent-systems.com/support/delayedwrite.html - this is a
good summary of the problem above.  It analyses what kind of settings
are needed for servers and clients in order to avoid this error (that is
depending on the combination of the server and the client to switch on
or to switch off the SMB signing).

On the basis of the last link we have checked the settings of the
Windows NT server (on that making the program run the error message
doesn't happen) and they suit the requirements written in the article.
The 2.2.3a-15 samba Windows NT behaves as a server on the network, that
is SMB signing should be switched off in it, too... however this version
doesn't know such an option! (I can't understand, if it doesn't know the
option of SMB signing how it can use?  Otherwise, if this samba can't
use it, it can't be switched off because it is not switched on...)
Anyway, we've also tried 2.2.8, 2.2.9 versions, but there was no result
beside the drastic slowing down, the error message arises again on XP.
(Drastic slowing down means: the speed doesn't exceed 20000kbit/s in
contradiction to the previous 150000kbit/s, Incoming ~10700, Outgoing
~8500).

We have ported 3.0.14a and 3.0.20pre1-1 versions aswell, they have SMB
signing option (client signing = diabled, server signing = disabled),
and it solves the question of error.  Using these versions the error
message doesn't arise on XP.  But the speed is awful!  We aren't able to
reach 30000kbit/s :(  If debug level = 3, even 20000kbit/scan't be
exceeded!  On XP the utilization of the processor doesn't go over 27%!
By the Windows netwatch the utilization of the network never exceeds 2%!
The utmost packet size (with iptraf) 76-150 byte.

It's interesting that in case of simple copy (that is I copy from samba
to XP starting copy from XP with Explorer) by the Windows netwatch speed
is fixed 11%, by iptraf it is roughly fixed 117000kbit/s (with version
2.2.3a-15).  And neither copies always run without errors!  Sometimes an
error message arrives: "Network name can't be reached" (or something
like that - it can't be totally reproducted the copy is sometimes
successful, sometimes not).

Here is the 2.2.3a-15 samba version's smb.conf file (as it can be seen,
we haven't tuned too much on it, it's almost the default config):

[global]
   workgroup = DOMAIN
   server string = %h server
   load printers = no 
   invalid users = root
   log file = /var/log/samba/log.%m
   debug level = 3
   max log size = 100000
   syslog = 0
   security = server
   password server = 192.168.18.47
   encrypt passwords = true
   socket options = TCP_NODELAY SO_SNDBUF=8760
   local master = no
   os level = 20
   domain master = no
   preferred master = no
   wins server = 192.168.18.47
   dns proxy = no
   name resolve order = lmhosts wins host bcast
   coding system = ISO8859-2
   client code page = 852 
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
   obey pam restrictions = yes

[share]
   comment = Share
   path = /samba
   browseable = no
   writeable = no
   create mask = 0660
   directory mask = 0770
   share modes = no
   write list = @irhat 
   force group = irhat
   preexec = logger "Logging %u user, %S share, %M machine"


And here is the 3.0.20pre1-1 samba version's smb.conf file (this is the
version tuned by us, but we've tried with the 2.2.3a-15 version's config
file, too - taking off or rewritten the invalid options because of the
chenga of versions):

[global]
   panic action = /usr/share/samba/panic-action %d
   workgroup = DOMAIN
   server string = %h server
   load printers = no
   invalid users = root
   log file = /var/log/samba/log.%m
   max log size = 100000
   syslog = 0
   security = server
   password server = 192.168.18.47
   encrypt passwords = true
   passdb backend = tdbsam guest
   socket options = TCP_NODELAY SO_KEEPALIVE IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
   local master = no
   os level = 20
   domain master = no
   preferred master = no
   wins server = 192.168.18.47
   dns proxy = no
   name resolve order = wins host lmhosts bcast
   preserve case = no
   short preserve case = no
   default case = lower
   case sensitive = no
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
   obey pam restrictions = yes
   dos charset = CP852
   unix charset = ISO8859-2
   deadtime = 0
   keepalive = 300
   max open files = 10000
   max xmit = 8192
   block size = 4096
   client signing = disabled
   server signing = disabled
   use spnego = yes
   client use spnego = yes
   change notify timeout = 300
   mangle prefix = 4
   stat cache = 0
   lm announce = no
   lm interval = 0
   wins proxy = no
   use sendfile = yes
   map archive = no
   kernel oplocks = no

[share]
   comment = Share
   path = /samba
   browseable = no
   writeable = no
   create mask = 0660
   directory mask = 0770
   share modes = no
   write list = @irhat
   force group = irhat
   preexec = logger "Logging %u user, %S share, %M machine"
   oplocks = no
   level2 oplocks = no
   nt acl support = no
   csc policy = disable
   set directory = no
   wide links = no
   follow symlinks = no


We've tried tuning tcp part with the next things:
echo 400000 400000 400000 > /proc/sys/net/ipv4/tcp_mem
echo 400000 400000 400000 > /proc/sys/net/ipv4/tcp_rmem
echo 400000 400000 400000 > /proc/sys/net/ipv4/tcp_wmem
echo 1                    > /proc/sys/net/ipv4/tcp_tw_recycle
echo 0                    > /proc/sys/net/ipv4/tcp_sack
echo 8192                 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 500000               > /proc/sys/net/ipv4/tcp_max_tw_buckets
echo 0                    > /proc/sys/net/ipv4/tcp_timestamps

Linux-Linux	ftp			251000kbit/s
Linux-XP	ftp			 40000kbit/s
Linux-Linux	smbclient		236000kbit/s (3.0.20pre1-1)
Linux-XP	Explorer		 22000kbit/s (3.0.20pre1-1)
Linux-XP	ftp			 40000kbit/s
Linux-XP	winscp		 	 35000kbit/s
Linux-XP	winscp(sftp mode)	 20000kbit/s
Linux-XP	ping -f			 55000kbit/s
Linux-Linux	ping -f			 56000kbit/s
Linux-XP	ping -f -s 6500		915000kbit/s
Linux-Linux	ping -f -s 6500		933000kbit/s


Has anybody got ideas?

-- 
		Bye
				    Zsiga

Sorry, for my poor English!


More information about the samba mailing list