SMB Block Size Negotiation When Copying Files with Windows NT Explorer (223140)
The information in this article applies to:
- Microsoft Windows NT Server 4.0
- Microsoft Windows NT Workstation 4.0
This article was previously published under Q223140 IMPORTANT: This article contains information about modifying the registry.
Before you modify the registry, make sure to back it up and make sure that you
understand how to restore the registry if a problem occurs. For information
about how to back up, restore, and edit the registry, click the following
article number to view the article in the Microsoft Knowledge Base: 256986 Description of the Microsoft Windows Registry
SUMMARY When you copy or move a file, the negotiated Server Message
Block (SMB) size is different. The block size depends on a number of factors
including:
- Whether Windows NT Explorer or an MS-DOS command prompt is
used to issue the command.
- Which direction the file is being moved or copied to (that
is, copying a file from your computer to another computer versus your computer
copying a file from another computer back to your own computer.)
When you use Windows NT Explorer to copy a file from the client
to a remote computer, data is typically transfered in Core mode in 4 KB blocks.
When you use Windows NT Explorer to copy a file from the remote
computer back to the client, data is typically transfered in Raw mode in 60 KB
blocks. When you use an MS-DOS command prompt command to copy a file
in either direction, data is generally transfered in Raw mode. Because Raw mode
typically uses a 60-64 KB transfer rate, and Core mode typically uses 4 KB, a
Raw-mode transfer is faster. MORE INFORMATION The factors listed below determine which transfer mode is
chosen. However, in this example, what's happening is not getting exclusive use
of the Virtual Circuit (VC), which is created when setting up the connection
between the two computers. When you cut or copy a file in Windows NT Explorer,
make a folder, or perform some other file system changes, Windows NT Explorer
will show that change quickly by updating the display. The update in the
display is triggered by a call called ChangeNotify. When copying a
file to a remote computer, a long distance ChangeNotify call is triggered. This
call goes over the network. This call also prevents getting exclusive use of
the VC to copy the file. When copying a file from a remote computer back to the
client (command issued locally), the ChangeNotify call is still triggered, but
it's now a local call. So the call is not sent over the wire, therefore, the
copy operation gets exclusive use of the VC. Because ChangeNotify is
not called for to copy or move a file when you use an MS-DOS command prompt
command, these transfers typically use Raw mode. From the
specifications for Core versus Raw mode data transfers: The Windows NT
redirector has the following requirements for performing raw mode I/O, all of
which must be satisfied for raw mode I/O to occur: - The Server Message Block (SMB) protocol negotiated between
the client and server must support Raw mode.
- The server must be configured to support Raw
mode.
- The client redirector must be configured to allow Raw
mode.
- No other SMB requests are pending on the same Virtual
Circuit (VC).
- The I/O is not on a blocking named pipe.
- For a READ request: the requested data size is equal to or
greater than 2 times the currently configured request buffer size, and the read
offset is not past the redirector's currently configured end-of-file.
- For a WRITE request: the requested data size is equal to or
greater than 1.5 times the currently configured request buffer size, and the
write offset is not more than approximately 1 MB past the current end-of-file.
- The I/O is to take no longer than 5 seconds to
complete."
Core Mode Data Transfer: When writing data in Core
mode, as in file copy to a remote server, size of data blocks transferred is
4KBytes by default. This can be modified using the following registry parameter
on the remote server side. WARNING: If you use Registry Editor incorrectly, you may cause serious
problems that may require you to reinstall your operating system. Microsoft
cannot guarantee that you can solve problems that result from using Registry
Editor incorrectly. Use Registry Editor at your own risk. To
increase the buffer size, edit the SizReqBuf registry value using the following
steps:
- Start Registry Editor (Regedt32.exe or
Regedit.exe).
- Go to the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters - Create the SizReqBuf value using the following information:
Value Name: SizReqBuf
Data Type: REG_DWORD
Data: 512 - 65535
Default: 4356 Note Small buffers use less memory; large buffers can improve performance. The exact value that works best in an environment
depends on the specific configuration of that environment, but 14596 is a value that has been shown to work well in a reasonably standard Ethernet environment.
By default, this setting is 4356 bytes on computers. On servers that have more than 512 MB of memory, this value is increased to 16 KB. A receive buffer that is larger can improve performance on query directory and similar commands, but at the price of more memory per work item.
- Quit Registry Editor, and then restart the Server service.
To restart the server service, use the following commands:
net stop server net start
server
REFERENCES152081 Use of Raw Data Transfer Mode Influenced by Application
Modification Type: | Major | Last Reviewed: | 5/13/2003 |
---|
Keywords: | kbinfo KB223140 |
---|
|