How to increase maximum number of simultaneous outstanding Windows client requests for SMB1?
- Last Updated:
- ONTAP 9
- Data ONTAP 7
- SMB 1
Questions and Answers
What is CIFS Max Multiplex?
In order to operate more efficiently, some applications such as Citrix and IIS combine many CIFS sessions into the same TCP connection. These connections are known as multiplexed connections. The cifs.max_mpx option (-max-mpx in ONTAP) determines how many outstanding SMB operations ONTAP can support per single TCP connection. When that value is reached, the client should stop sending further SMB commands to ONTAP.
Note: max mpx only applies to SMB1 sessions.
The value associated with the cifs.max_mpx option should never be set below the Windows NT default of 50. If CIFS statistical output shows the Max Multiplex to be greater than 32, then this number should be raised.
An example from partial output from command line output cifs stat -c on a NetApp Storage Controller is as follows:
Max Multiplex = 46, Max pBlk Exhaust = 0, Max pBlk Reserve Exhaust = 0
The only legal values are 50, 126, 253, 255* and 1124. Do not set this to any other values without an explicit conversation with NetApp customer service. It should be noted that automatically setting this option to a high value is not recommended. High values consume a lot of resources on the clients. Setting this to an unapproved value will cause errors on some clients.
Note: As of Data ONTAP 7.3.6 & 8.0.2, the default value for the option cifs.max_mpx has been changed to 255.
The options cifs.max_mpx (which applies only to SMB1 sessions) value controls a number passed in the initial connection of a client to the filer. Changing this value will not affect active sessions. For this reason, we recommend only changing this option when CIFS is terminated. Once CIFS restarts, all connections will have the new value. There is a similar parameter on Windows side, see Microsoft article 960259
For changes you will want to make on the IIS servers, see Microsoft Article 221790.
When to increase the value of max_mpx on a storage system?
The value of the max_mpx (-max-mpx in ONTAP) option can be increased under the following circumstances:
- CIFS max is going above the current value specified in the options.
- Windows clients regularly gets messages when opening MS Office documents: 'document already open' or 'document is write protected'
- Slow CIFS network performance
- Windows client cannot connect to Windows NT share
- cifs.max_mpx and
CIFS statmax multiplex values are the same
- Another message that may appear is the Health Check warning message:
cifs statoutput shows that the max multiplex value set on cifs.max_mpx is being exceeded.
The CIFS protocol defines the cifs.max_mpx value as a two byte field, with possible values from 0 to 65535. High values consume a lot of resources on the clients connecting to the filer. Please refer to the following KBs if running a Windows 2000 server, Terminal Server or workstation.
Windows servers have an option corresponding to cifs.max_mpx in the Windows registry. It is called MaxMpxCt. The maximum value that a client supports should be determined by the LanmanWorkstation MaxCmds parameter. Changing these values is discussed in detail by Microsoft in the following KB article:
Microsoft KB 810886: The network Basic Input-Output System(BIOS) command limit has been reached error message in Windows Server 2003, in Windows XP, and in Windows 2000 Server
Note: For a given client and server (filer) pair, the limit should be the lower of these two values.
Ultimately, when setting the value of cifs.max_mpx on a filer, one should review the output of the configured setting with the options cifs.max_mpx command and compare this to the operational value of max multiplex given by the cifs stat command to understand if the value is being approached or exceeded.
For example, the only circumstances where one would increase the value of cifs.max_mpx to above 1124 would be if the following is true:
- Only Windows 2003 and higher OS's attach to the filer
- The cifs stat output shows that the value of 1124 is being approached or exceeded.
- Testing has been performed to verify that this setting will not cause other performance issues on the Windows clients.
Note: Outstanding ChangeNotify requests are not counted in CIFS stat. Use Windows perfmon and track redirectorcurrent commands if outstanding change notify requests are expected to be contributing to CIFS multiplexing.
How to increase maximum number of simultaneous outstanding Windows client requests that a filer allows:
If using a Windows Terminal Server with the filer, see KB article What is the recommended tuning for Windows Terminal Server (WTS)CIFS clients?
If not using a Windows Terminal Server and the filer has an excessive number of CIFS sessions, in the Data ONTAP Information Library, see the options cifs.max_mpx man page or Command Reference Guide for your specific Data ONTAP version first, then complete the following steps:
Note: This is for SMB 1 connections only.
tatistics show-periodic -object cifs:vserver -instance vs1 interval 1 -iterations 10 -counter max_commands_outstanding|commands_outstanding (in ONTAP diag mode)]
- Record the Max Multiplex value.
[vserver cifs options show -vserver <vserver_name> -instance (in ONTAP diag mode)]
- Record the output. Note the default value. See the options cifs.max_mpx man page for more information about the option.
- If the values in steps 1 and 3 are the same:
- Terminate CIFS:
[cifs stop (in Clustered Data ONTAP)]
options cifs.max_mpx 126.
[vserver cifs options modify -vserver <vserver_name> -max-mpx 126 (in ONTAP
- Restart CIFS:
[cifs start (in Clustered Data ONTAP)]
- Perform steps 1 through 4 again after CIFS clients have reestablished connections.
- Terminate CIFS:
- If the values in steps 1 and 3 remain the same, perform step 3 again, BUT increase the
cifs.max_mpxvalue in step 5, ii to 253. If issues persist, increase the
cifs.max_mpxvalue to 1124.
Note: ONTAP 9 starts at 255 for default.
Add your text here.