FIELD

This disclosure relates to computing systems and related devices and methods, and, more particularly, to a method and apparatus for dynamically adjusting differentiated share prioritization in a storage system.

SUMMARY

The following Summary and the Abstract set forth at the end of this application are provided herein to introduce some concepts discussed in the Detailed Description below. The Summary and Abstract sections are not comprehensive and are not intended to delineate the scope of protectable subject matter which is set forth by the claims presented below.

All examples and features mentioned below can be combined in any technically possible way.

A Software Defined Network Attached Storage (SDNAS) process executes on a storage system to provide access to shared file systems, referred to herein as “shares”, maintained by the storage system. Users access the shares using protocol clients. To enable the SDNAS to provide differentiated prioritization between the various shares, a share priority table is maintained by the SDNAS. The share priority table may be specific to the SDNAS process, or commonly accessed by multiple SDNAS processes. As shares are created, or optionally after the shares have been created, each share is assigned a share priority which is stored in the share priority table. When an IO operation is received from a protocol client on a share, the SDNAS process determines a share priority value of the share from the share priority table. The share priority value is used to specify an IO priority which is transmitted to the storage system operating system, and used by the operating system scheduling mechanism to differentiate prioritization between IO operations on different shares. The share priority value is also used to adjust the CPU priority of the IO operation.

As shares are created, an initial share priority is assigned to the share, either manually by a system administrator or a default share priority is assigned by the SDNAS. Periodically, a daemon adjusts share priorities of the various shares based on use factors, such as the average number of protocol client connections on a share, the average number of reads on the share, and whether the share supports Server Message Block (SMB) continuous availability. The use factors are used to determine an average usage value for the share over the preceding time period, and the average usage value is compared with minimum and maximum usage thresholds. Shares with average usage values above the maximum usage threshold have their share priority increased. Shares with average usage values below the minimum usage threshold have their share priority decreased. Shares with average usage values in between the maximum and minimum threshold have no adjustment to their share priority. The amount of variation of share priority values may be limited, depending on the implementation. By continuously adjusting the share priorities of the shares, shares with higher average usage values are able to be provided with temporarily higher share priority, to thus reduce latency associated with access operations on the more frequently accessed shares. This provides the SDNAS with the ability to give preferential treatment to protocol clients accessing more frequently used shares, provides better throughput for mission critical applications, and enables the system to dynamically adapt to changes in workload on the shares.

