US20080172503A1 - System and method for dynamically assigning I/O priority - Google Patents

System and method for dynamically assigning I/O priority Download PDF

Info

Publication number
US20080172503A1
US20080172503A1 US12/077,163 US7716308A US2008172503A1 US 20080172503 A1 US20080172503 A1 US 20080172503A1 US 7716308 A US7716308 A US 7716308A US 2008172503 A1 US2008172503 A1 US 2008172503A1
Authority
US
United States
Prior art keywords
priority
command
logical unit
responsive
storage controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/077,163
Inventor
John Thomas Flynn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US12/077,163 priority Critical patent/US20080172503A1/en
Publication of US20080172503A1 publication Critical patent/US20080172503A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

Definitions

  • This invention relates to a system and method for dynamically assigning Input/Output (I/O) priority in an open system.
  • I/O Input/Output
  • SCSI Small Computer Serial Interface
  • ANSI X3.131-1994 and later versions describes a well-defined peripheral bus that is independent of computer system buses. It is a shared, contention-based resource.
  • a SCSI device connects to a SCSI bus via the device's controller and may be either a peripheral device or a host computer.
  • one or more host computers connect to one or more peripheral devices through a SCSI bus. This arrangement allows users to upgrade presently-connected devices or add new devices to the bus without changing the devices already connect to the bus.
  • SCSI devices are either initiators or targets, or both.
  • An initiator is a device such as a host computer that initiates and delivers requests for tasks for fulfillment. If a device can be both an initiator and target, it may only behave on the bus as one at any instant.
  • a target is a device such as a disk drive that performs requested tasks.
  • the SCSI architecture allows two, and only two, devices to communicate with each other over a shared bus simultaneously.
  • SCSI devices communicate with one another using a well-defined protocol involving sequential states called phases.
  • a SCSI bus can only be in one phase at a time and will enter most phases only after exiting previous specific states.
  • Initiators communicate with targets through bus requests called commands. Thereafter, the targets control request resolution. After receiving a command, but before fulfilling it, a target may disconnect from the bus. This allows initiators to perform other work (such as issuing commands to other targets) as the target performs internal processing.
  • Each SCSI device has a unique bus ID which users set using switches, jumpers, or set-up routines. Hosts typically have the highest SCSI bus ID, allowing them to initiate requests with minimum peripheral device interference. To obtain bus control, devices must wait for the bus to achieve a bus free phase which indicates the bus is idle. Devices then arbitrate for bus control. The winning device proceeds through a number of additional phases to complete its task. Losing devices must wait for the bus to achieve another bus free phase, at which time these losing devices may once again attempt to gain control of the SCSI bus.
  • This fixed priority arbitration scheme of SCSI has drawbacks. Higher-priority devices get access first, tending to monopolize the SCSI bus by consuming most, if not all, of the SCSI bus bandwidth, and possibly preventing lower-priority devices from gaining sufficient access to the SCSI bus to perform properly.
  • U.S. Pat. No. 6,223,244 describes a method whereby a high priority initiator on a shared bus is self-regulating by listening for pings from lower priority initiators so that it does not monopolize the bus and starve lower priority initiators, thus assuring that each initiator receives a share of bus bandwidth.
  • the zOS Work load Manager controls I/O priority among I/O initiators for Extended Count Key Data (ECKD) volumes by assigning an I/O priority to each I/O operation. This is done by inserting an I/O priority value in either the Define Extent or Prefix Channel Control Word (CCW) parameter data sent to a storage controller in connection with each I/O operation.
  • CCW Prefix Channel Control Word
  • the storage controller assigns a static default priority to all I/O operations from these initiators.
  • This static default priority is not dynamically changed to accommodate different priorities for different initiators, or changes in priorities for a given initiator or application with respect to time, and therefore the storage controller is susceptible to being flooded by I/O from a backup system accessing the storage controller as discussed above.
  • a method for dynamically assigning I/O priority by an initiator in an open system including receiving at a device driver of an initiator device, a datapath command for setting a default I/O priority for a specified logical unit; parsing the datapath command and storing the default I/O priority for the logical unit to a priority store of a storage controller on the logical unit; and exiting the datapath command.
  • a method for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators including receiving an I/O command from an initiator selectively including an I/O priority default value for a logical unit; responsive to the I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; and responsive to the I/O command being a data transfer command with respect to the logical unit, queuing the data transfer command for execution based on the I/O priority default value previously stored for the logical unit.
  • system for controlling I/O transfers including a host system; a storage controller; the storage controller including a priority store and an operation queue; the host system including an adapter driver; the adapter driver, selectively responsive to a datapath command from an initiator application for setting a default I/O priority for a specified logical unit, for storing the default I/O priority for the logical unit to a priority store of the storage controller, and selectively responsive to a data transfer command from the initiator application for storing the data transfer command to the storage controller; and the storage controller responsive to the datapath command for storing the I/O priority default value for the logical unit to the priority store; and responsive to the data transfer command with respect to the logical unit for queuing the data transfer command for execution based on the I/O priority default value.
  • a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for assigning I/O priority by an initiator in an open system, the method including receiving at a device driver of an initiator device, a datapath command for setting a default I/O priority for a specified logical unit; parsing the datapath command and storing the default I/O priority for the logical unit to a priority store of a storage controller on said logical unit; and exiting said datapath command.
  • a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, including comprising receiving an I/O command from an initiator selectively including an I/O priority default value for a logical unit; responsive to said I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; and responsive to the I/O command being a data transfer command with respect to the logical unit, queuing the data transfer command for execution based on the I/O priority default value previously stored for the logical unit.
  • a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, the method steps including receiving from an initiator host selectively an I/O command including an I/O priority default value for accessing a fixed block (FB) disk on a logical unit or a CCW including a prefix or define extent command for accessing an ECKD disk on the logical unit; responsive to the I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; responsive to the I/O command being a data transfer command with respect to the FB disk on the logical unit, queuing said data transfer command for execution based on the I/O priority default value previously stored for the logical unit; and responsive to the CCW for accessing an ECKD disk on the logical unit, queuing the I/O command for execution
  • FIG. 1 is a high level system diagram illustrating the system of the invention.
  • FIG. 2 is a diagrammatic representation of a protocol stack.
  • FIG. 3 is a diagrammatic representation of SCSI command.
  • FIG. 4 is a flow diagram illustrating the logic of a datapath command to set a default I/O priority for a logical unit.
  • FIG. 5 is a flow diagram illustrating the logic in an I/O subsystem for executing commands based on a default I/O priority.
  • FIG. 6 is a high level system diagram illustrating a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically assigning I/O priority.
  • a system and method for an open systems server, or initiator, to dynamically assign input/output (I/O) priority using a SCSI command.
  • I/O input/output
  • a relative value that is associated with an I/O request is passed to a storage subsystem that can be used to prioritize the execution of I/O requests from all initiators within a storage subsystem. This function is particularly useful when the storage subsystem is running in a heterogeneous environment or when there is concern that other servers could monopolize storage subsystem resources and cause performance degradation on production servers.
  • Initiators, or host systems inform the storage subsystem what the priority should be for each initiator on a per logical unit (LUN) basis.
  • a multipathing driver ( FIG. 2 , driver 64 ), or subsystem device driver (SDD) 64 for a storage controller ( FIG. 1 , controller 31 ) establishes and controls I/O priority for each host initiator.
  • U.S. Pat. No. 6,202,095 B1 provides a system for defining characteristics between processing systems, and may be used for communicating operating characteristics from a server to a storage subsystem, thus allowing SDD 64 to establish and modify the priority with which I/O should be processed from each initiator.
  • a SCSI command Define Subsystem Operation (DSO) has its set system characteristics (SSC) order extended to include an I/O priority value to be used for each succeeding I/O for the initiator from which the DSO SSC command was received.
  • An SSD datapath command (the customer CLI interface into SDD 64 ) sets the I/O priority value for each path under control of SDD per device. Using this method I/O priority can be controlled for each storage subsystem device attached to a server and even for an application on a server.
  • the system of the invention includes, by way of example, several host systems 10 - 12 , each a potential initiator of I/O commands with respect to I/O devices 36 - 38 off storage controller 31 .
  • Each host system includes a respective CPU 26 - 28 and main storage 21 - 23 .
  • Host system 10 is connected to storage controller 31 by parallel SCSI or fiber channels 41 - 44 , and storage controller 31 is connected to I/O devices 36 - 38 by communication lines 51 - 55 , respectively, and includes a priority store 32 and operation queue 33 .
  • Priority or operation queue 33 is, in an exemplary embodiment, a simple linked list that can have elements added to the end or inserted at any point in the list based on the priority value.
  • List elements represent I/O to be executed and are taken off the queue as they are executed in priority order.
  • Priority store 32 is a register or store at controller 31 with an entry for each LUN, or I/O device 36 - 38 on controller 31 .
  • I/O subsystem 34 includes storage controller 31 and I/O devices 36 - 38 .
  • Each I/O device 36 - 38 may be referred to as a logical unit (LUN).
  • LUN logical unit
  • an I/O subsystem comprises storage controller 31 .
  • host system 11 is connected to storage controller 21 by parallel SCSI or fiber channels 45
  • host system 12 by parallel SCSI or fiber channels 46 .
  • a plurality of such channels 45 represents a path group which may be configured to share a priority.
  • host system 10 for example, may be an open system server, and host system 12 , again by way of example, may be an IBM System 390—these disparate host systems forming a heterogeneous system configuration.
  • I/O operations with respect to host system 12 for the case of an IBM System 390 application, I/O for high priority transaction operations and I/O for low priority backup operations are interleaved, with each operation including a priority specification by way of a priority value in either the Define Extent or Prefix CCW parameter data.
  • a default priority is set for each path 41 - 44 , which priority is assigned to each I/O operation on that path, and which priority may be set and changed by way of a SCSI command, described hereafter.
  • Protocol stack 60 includes an operating system level 61 , application level 62 , file system level 63 , device driver level 64 , adapter driver 65 , and host bus adapter 66 .
  • the processes comprising the method of an exemplary embodiment of the invention are executed in device driver level 64 .
  • SCSI command 70 includes operation code field 72 , parameter length field 73 , block length field 74 , parameter list length field 75 , data description field 76 and data field 77 .
  • the SCSI command 70 operation code 72 is set to, say, x‘EB’, data description field 76 to, say, ‘establish default priority order code’, and then the actual priority code is set in data field 77 .
  • This command x‘EB’ requests that the target storage controller 31 receive control data from the initiator, such as host 10 . This data is not recorded on I/O device, such as DASD, 36 - 38 . Rather, controller 31 buffers the data in memory 32 for use by associated functions.
  • a flow diagram illustrates the logic of a datapath command to set a default I/O priority for a logical unit 36 , 37 or 38 .
  • a datapath command is issued by a customer either interactively or as part of a script and is parsed by SDD 64 . Included in the command is the identification of the LUN (which is platform dependent, i.e., LUNs are identified differently on most UNIX systems and Windows systems).
  • device driver 64 parses a datapath command and stores a new I/O priority value for a logical unit in priority store 32 of storage controller 31 , and in step 83 device driver 64 exits the datapath command.
  • a flow diagram illustrates the logic in an I/O subsystem 34 for executing commands based on a default I/O priority.
  • storage controller 31 receives an I/O command 70 from initiator, or host system, 10 .
  • controller 31 determines if the received command is to set a default I/O priority (that is, is the operation code 72 set to x‘EB’). If so, in step 93 , storage controller 31 stores the new I/O priority default value for the LUN.
  • the LUN in this exemplary embodiment, is not identified in the CDB 70 .
  • Storage controller 31 knows which LUN the data storage operation (DSO) applies to because the command is addressed to the LUN by initiator 10 in the same way that a data transfer command, such as a read or write command, applies to the LUN 36 - 38 to which it is sent. If not, the received command may be for an I/O operation, and that operation is queued in operation queue 33 for execution by controller 31 based on the default I/O priority value previously set for this LUN 36 - 38 . In step 95 , storage controller 31 gets a next I/O command, and processing returns to step 91 .
  • DSO data storage operation
  • Device driver 64 of host system 10 generates a SCSI command 70 down each path 41 - 44 through adapter driver 65 and host bus adapter 66 to storage controller 31 .
  • a System/390 host 12 uses CCWs to access ECKD disks 36 - 38 and open system hosts 10 , 11 use CDBs 70 to access FB disks 36 - 38 .
  • System/390 hosts 12 able to access FB disks will also use SCSI CDBs, and operations are prioritized as previously described with respect to priority store 32 for open system host 10 .
  • the I/O priority from a Prefix or Define Extent command (not the I/O priority set in priority store 32 as a result of a DSO command) is what determines where the I/O should be queued in operation queue 33 relative to other requests already queued.
  • FIG. 6 it is within the scope of the invention to provide a computer program product or program element, or a program storage or memory device 100 such as a solid or fluid transmission medium 110 , magnetic or optical wire, tape or disc 106 , 108 , or the like, for storing signals readable by a machine as is illustrated by line 104 , for controlling the operation of a computer 102 , such as a host system 10 or storage controller 31 , according to the method of the invention and/or to structure its components in accordance with the system of the invention.
  • a computer program product or program element or a program storage or memory device 100 such as a solid or fluid transmission medium 110 , magnetic or optical wire, tape or disc 106 , 108 , or the like, for storing signals readable by a machine as is illustrated by line 104 , for controlling the operation of a computer 102 , such as a host system 10 or storage controller 31 , according to the method of the invention and/or to structure its components in accordance with the system of the invention.
  • each step of the method may be executed on any general purpose computer, such as IBM Systems designated as zSeries, iSeries, xSeries, and pSeries, or the like and pursuant to one or more, or a part of one or more, program elements, modules or objects generated from any programming language, such as C++, Java, P1/1, Fortran or the like.
  • each said step, or a file or object or the like implementing each said step may be executed by special purpose hardware or a circuit module designed for that purpose.

Abstract

A system for controlling I/O transfers includes a host system or initiator including an adapter driver layer; and a storage controller. The storage controller includes a priority store and an operation queue. The adapter driver is selectively responsive to a datapath command from an initiator application for setting a default I/O priority for a specified logical unit, for storing the default I/O priority for the logical unit to a priority store of the storage controller, and selectively responsive to a data transfer command from an initiator application for storing the data transfer command to the storage controller. The storage controller is responsive to the datapath command for storing the I/O priority default value for the logical unit to the priority store; and responsive to the data transfer command with respect to the logical unit for queuing the data transfer command for execution based on the I/O priority default value.

Description

  • This application is a divisional of U.S. patent application Ser. No. 10/683,149 filed 9 Oct. 2003 by John T. Flynn, Jr. for System and Method for Dynamically Assigning I/O Priority.
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field of the Invention
  • This invention relates to a system and method for dynamically assigning Input/Output (I/O) priority in an open system.
  • 2. Background Art
  • The Small Computer Serial Interface (SCSI) standard (ANSI X3.131-1994 and later versions) describes a well-defined peripheral bus that is independent of computer system buses. It is a shared, contention-based resource. A SCSI device connects to a SCSI bus via the device's controller and may be either a peripheral device or a host computer. Typically, one or more host computers connect to one or more peripheral devices through a SCSI bus. This arrangement allows users to upgrade presently-connected devices or add new devices to the bus without changing the devices already connect to the bus.
  • SCSI devices are either initiators or targets, or both. An initiator is a device such as a host computer that initiates and delivers requests for tasks for fulfillment. If a device can be both an initiator and target, it may only behave on the bus as one at any instant. A target is a device such as a disk drive that performs requested tasks. The SCSI architecture allows two, and only two, devices to communicate with each other over a shared bus simultaneously.
  • SCSI devices communicate with one another using a well-defined protocol involving sequential states called phases. A SCSI bus can only be in one phase at a time and will enter most phases only after exiting previous specific states. Initiators communicate with targets through bus requests called commands. Thereafter, the targets control request resolution. After receiving a command, but before fulfilling it, a target may disconnect from the bus. This allows initiators to perform other work (such as issuing commands to other targets) as the target performs internal processing.
  • Each SCSI device has a unique bus ID which users set using switches, jumpers, or set-up routines. Hosts typically have the highest SCSI bus ID, allowing them to initiate requests with minimum peripheral device interference. To obtain bus control, devices must wait for the bus to achieve a bus free phase which indicates the bus is idle. Devices then arbitrate for bus control. The winning device proceeds through a number of additional phases to complete its task. Losing devices must wait for the bus to achieve another bus free phase, at which time these losing devices may once again attempt to gain control of the SCSI bus.
  • This fixed priority arbitration scheme of SCSI has drawbacks. Higher-priority devices get access first, tending to monopolize the SCSI bus by consuming most, if not all, of the SCSI bus bandwidth, and possibly preventing lower-priority devices from gaining sufficient access to the SCSI bus to perform properly. This adverse effect on lower-priority devices is known as “access starvation,” “initiator starvation,” or “target starvation.” If a server (or initiator) is doing very fast I/O (which happens often if a server is doing a backup and no processing of data), it could flood a storage subsystem with I/O, especially if it is attached to the storage controller by a different SCSI bus than a production server that is doing processing of data in addition to doing I/O. However, inasmuch the production server I/O is generally more important than the backup I/O, there is a need in the art for a facility which allocates more I/O bandwidth to the production server I/O.
  • U.S. Pat. No. 6,223,244 describes a method whereby a high priority initiator on a shared bus is self-regulating by listening for pings from lower priority initiators so that it does not monopolize the bus and starve lower priority initiators, thus assuring that each initiator receives a share of bus bandwidth.
  • In the IBM Total Enterprise Storage Server (ESS), the zOS Work load Manager (WLM) controls I/O priority among I/O initiators for Extended Count Key Data (ECKD) volumes by assigning an I/O priority to each I/O operation. This is done by inserting an I/O priority value in either the Define Extent or Prefix Channel Control Word (CCW) parameter data sent to a storage controller in connection with each I/O operation. In this system, for parallel SCSI or Fiber Channel Protocol (FCP, a serial channel having, insofar as the present invention is concerned, similar characteristics to the parallel SCSI channel) initiator attachment, the storage controller assigns a static default priority to all I/O operations from these initiators. This static default priority is not dynamically changed to accommodate different priorities for different initiators, or changes in priorities for a given initiator or application with respect to time, and therefore the storage controller is susceptible to being flooded by I/O from a backup system accessing the storage controller as discussed above.
  • SUMMARY OF THE INVENTION
  • In accordance with the invention, there is provided a method for dynamically assigning I/O priority by an initiator in an open system, including receiving at a device driver of an initiator device, a datapath command for setting a default I/O priority for a specified logical unit; parsing the datapath command and storing the default I/O priority for the logical unit to a priority store of a storage controller on the logical unit; and exiting the datapath command.
  • Further in accordance with the invention, there is provided a method for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, including receiving an I/O command from an initiator selectively including an I/O priority default value for a logical unit; responsive to the I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; and responsive to the I/O command being a data transfer command with respect to the logical unit, queuing the data transfer command for execution based on the I/O priority default value previously stored for the logical unit.
  • Further in accordance with the invention, there is provided system for controlling I/O transfers, including a host system; a storage controller; the storage controller including a priority store and an operation queue; the host system including an adapter driver; the adapter driver, selectively responsive to a datapath command from an initiator application for setting a default I/O priority for a specified logical unit, for storing the default I/O priority for the logical unit to a priority store of the storage controller, and selectively responsive to a data transfer command from the initiator application for storing the data transfer command to the storage controller; and the storage controller responsive to the datapath command for storing the I/O priority default value for the logical unit to the priority store; and responsive to the data transfer command with respect to the logical unit for queuing the data transfer command for execution based on the I/O priority default value.
  • Further in accordance with the invention, there is provided a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for assigning I/O priority by an initiator in an open system, the method including receiving at a device driver of an initiator device, a datapath command for setting a default I/O priority for a specified logical unit; parsing the datapath command and storing the default I/O priority for the logical unit to a priority store of a storage controller on said logical unit; and exiting said datapath command.
  • Further in accordance with the invention, there is provided a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, including comprising receiving an I/O command from an initiator selectively including an I/O priority default value for a logical unit; responsive to said I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; and responsive to the I/O command being a data transfer command with respect to the logical unit, queuing the data transfer command for execution based on the I/O priority default value previously stored for the logical unit.
  • Further in accordance with the invention, there is provided a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, the method steps including receiving from an initiator host selectively an I/O command including an I/O priority default value for accessing a fixed block (FB) disk on a logical unit or a CCW including a prefix or define extent command for accessing an ECKD disk on the logical unit; responsive to the I/O command being a set default value I/O command, storing the I/O priority default value for the logical unit; responsive to the I/O command being a data transfer command with respect to the FB disk on the logical unit, queuing said data transfer command for execution based on the I/O priority default value previously stored for the logical unit; and responsive to the CCW for accessing an ECKD disk on the logical unit, queuing the I/O command for execution based on I/O priority set in the prefix or define extent command.
  • Other features and advantages of this invention will become apparent from the following detailed description of the an exemplary embodiment of the invention, taken in conjunction with the accompanying drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a high level system diagram illustrating the system of the invention.
  • FIG. 2 is a diagrammatic representation of a protocol stack.
  • FIG. 3 is a diagrammatic representation of SCSI command.
  • FIG. 4 is a flow diagram illustrating the logic of a datapath command to set a default I/O priority for a logical unit.
  • FIG. 5 is a flow diagram illustrating the logic in an I/O subsystem for executing commands based on a default I/O priority.
  • FIG. 6 is a high level system diagram illustrating a program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically assigning I/O priority.
  • BEST MODE FOR CARRYING OUT THE INVENTION
  • In accordance with an embodiment of the invention, a system and method is provided for an open systems server, or initiator, to dynamically assign input/output (I/O) priority using a SCSI command. A relative value that is associated with an I/O request is passed to a storage subsystem that can be used to prioritize the execution of I/O requests from all initiators within a storage subsystem. This function is particularly useful when the storage subsystem is running in a heterogeneous environment or when there is concern that other servers could monopolize storage subsystem resources and cause performance degradation on production servers.
  • Initiators, or host systems, inform the storage subsystem what the priority should be for each initiator on a per logical unit (LUN) basis. A multipathing driver (FIG. 2, driver 64), or subsystem device driver (SDD) 64 for a storage controller (FIG. 1, controller 31) establishes and controls I/O priority for each host initiator.
  • U.S. Pat. No. 6,202,095 B1 provides a system for defining characteristics between processing systems, and may be used for communicating operating characteristics from a server to a storage subsystem, thus allowing SDD 64 to establish and modify the priority with which I/O should be processed from each initiator. In an exemplary embodiment of the invention, a SCSI command Define Subsystem Operation (DSO) has its set system characteristics (SSC) order extended to include an I/O priority value to be used for each succeeding I/O for the initiator from which the DSO SSC command was received. An SSD datapath command (the customer CLI interface into SDD 64) sets the I/O priority value for each path under control of SDD per device. Using this method I/O priority can be controlled for each storage subsystem device attached to a server and even for an application on a server.
  • Referring to FIG. 1, the system of the invention includes, by way of example, several host systems 10-12, each a potential initiator of I/O commands with respect to I/O devices 36-38 off storage controller 31. Each host system includes a respective CPU 26-28 and main storage 21-23. Host system 10 is connected to storage controller 31 by parallel SCSI or fiber channels 41-44, and storage controller 31 is connected to I/O devices 36-38 by communication lines 51-55, respectively, and includes a priority store 32 and operation queue 33.
  • Priority or operation queue 33 is, in an exemplary embodiment, a simple linked list that can have elements added to the end or inserted at any point in the list based on the priority value. List elements represent I/O to be executed and are taken off the queue as they are executed in priority order.
  • Priority store 32 is a register or store at controller 31 with an entry for each LUN, or I/O device 36-38 on controller 31.
  • In a subsystem with internal storage, I/O subsystem 34 includes storage controller 31 and I/O devices 36-38. Each I/O device 36-38 may be referred to as a logical unit (LUN). For a subsystem that manages externally attached storage, an I/O subsystem comprises storage controller 31. Similarly, host system 11 is connected to storage controller 21 by parallel SCSI or fiber channels 45, and host system 12 by parallel SCSI or fiber channels 46. A plurality of such channels 45 represents a path group which may be configured to share a priority. In this system overview, host system 10, for example, may be an open system server, and host system 12, again by way of example, may be an IBM System 390—these disparate host systems forming a heterogeneous system configuration.
  • For I/O operations with respect to host system 12, for the case of an IBM System 390 application, I/O for high priority transaction operations and I/O for low priority backup operations are interleaved, with each operation including a priority specification by way of a priority value in either the Define Extent or Prefix CCW parameter data.
  • For I/O operations with respect to host system 10, for the case of an open system host, a default priority is set for each path 41-44, which priority is assigned to each I/O operation on that path, and which priority may be set and changed by way of a SCSI command, described hereafter.
  • Referring to FIG. 2, a protocol stack is illustrated, the various levels of the stack representing code stored in main storage 21-23 for execution by CPU 26-28, respectively. Protocol stack 60 includes an operating system level 61, application level 62, file system level 63, device driver level 64, adapter driver 65, and host bus adapter 66. The processes comprising the method of an exemplary embodiment of the invention are executed in device driver level 64.
  • Referring to FIG. 3, a SCSI command is illustrated. Also referred to as a Command Descriptor Block (CDB), SCSI command 70 includes operation code field 72, parameter length field 73, block length field 74, parameter list length field 75, data description field 76 and data field 77. In accordance with an exemplary embodiment of the invention, for setting and modifying default priority for a path 41, the SCSI command 70 operation code 72 is set to, say, x‘EB’, data description field 76 to, say, ‘establish default priority order code’, and then the actual priority code is set in data field 77. This command x‘EB’ requests that the target storage controller 31 receive control data from the initiator, such as host 10. This data is not recorded on I/O device, such as DASD, 36-38. Rather, controller 31 buffers the data in memory 32 for use by associated functions.
  • Referring to FIG. 4, a flow diagram illustrates the logic of a datapath command to set a default I/O priority for a logical unit 36, 37 or 38. A datapath command is issued by a customer either interactively or as part of a script and is parsed by SDD 64. Included in the command is the identification of the LUN (which is platform dependent, i.e., LUNs are identified differently on most UNIX systems and Windows systems). In step 81, device driver 64 parses a datapath command and stores a new I/O priority value for a logical unit in priority store 32 of storage controller 31, and in step 83 device driver 64 exits the datapath command.
  • Referring to FIG. 5, a flow diagram illustrates the logic in an I/O subsystem 34 for executing commands based on a default I/O priority. In step 91, storage controller 31 receives an I/O command 70 from initiator, or host system, 10. In step 92, controller 31 determines if the received command is to set a default I/O priority (that is, is the operation code 72 set to x‘EB’). If so, in step 93, storage controller 31 stores the new I/O priority default value for the LUN. The LUN, in this exemplary embodiment, is not identified in the CDB 70. Storage controller 31 knows which LUN the data storage operation (DSO) applies to because the command is addressed to the LUN by initiator 10 in the same way that a data transfer command, such as a read or write command, applies to the LUN 36-38 to which it is sent. If not, the received command may be for an I/O operation, and that operation is queued in operation queue 33 for execution by controller 31 based on the default I/O priority value previously set for this LUN 36-38. In step 95, storage controller 31 gets a next I/O command, and processing returns to step 91.
  • Device driver 64 of host system 10 generates a SCSI command 70 down each path 41-44 through adapter driver 65 and host bus adapter 66 to storage controller 31.
  • A System/390 host 12 uses CCWs to access ECKD disks 36-38 and open system hosts 10, 11 use CDBs 70 to access FB disks 36-38. System/390 hosts 12 able to access FB disks will also use SCSI CDBs, and operations are prioritized as previously described with respect to priority store 32 for open system host 10. In the case where a System/390 host 12 using CCWs accesses a FB disk, the I/O priority from a Prefix or Define Extent command (not the I/O priority set in priority store 32 as a result of a DSO command) is what determines where the I/O should be queued in operation queue 33 relative to other requests already queued.
  • ALTERNATIVE EMBODIMENTS
  • It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. Referring to FIG. 6, in particular, it is within the scope of the invention to provide a computer program product or program element, or a program storage or memory device 100 such as a solid or fluid transmission medium 110, magnetic or optical wire, tape or disc 106, 108, or the like, for storing signals readable by a machine as is illustrated by line 104, for controlling the operation of a computer 102, such as a host system 10 or storage controller 31, according to the method of the invention and/or to structure its components in accordance with the system of the invention.
  • Further, each step of the method may be executed on any general purpose computer, such as IBM Systems designated as zSeries, iSeries, xSeries, and pSeries, or the like and pursuant to one or more, or a part of one or more, program elements, modules or objects generated from any programming language, such as C++, Java, P1/1, Fortran or the like. And still further, each said step, or a file or object or the like implementing each said step, may be executed by special purpose hardware or a circuit module designed for that purpose.
  • Accordingly, the scope of protection of this invention is limited only by the following claims and their equivalents.

Claims (6)

1-6. (canceled)
7. A system for controlling I/O transfers, comprising:
a host system;
a storage controller;
said storage controller including a priority store and an operation queue;
said host system including an adapter driver;
said adapter driver, selectively responsive to a datapath command from an initiator application for setting a default I/O priority for a specified logical unit, for storing said default I/O priority for said logical unit to a priority store of said storage controller, and selectively responsive to a data transfer command from said initiator application for storing said data transfer command to said storage controller; and
said storage controller responsive to said datapath command for storing said I/O priority default value for said logical unit to said priority store; and
responsive to said data transfer command with respect to said logical unit for queuing said data transfer command for execution based on said I/O priority default value.
8-13. (canceled)
14. A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, comprising:
receiving from an initiator host selectively an I/O command including an I/O priority default value for accessing a FB disk on a logical unit or a CCW including a prefix or define extent command for accessing an ECKD disk on said logical unit;
responsive to said I/O command being a set default value I/O command, storing said I/O priority default value for said logical unit;
responsive to said I/O command being a data transfer command with respect to said FB disk on said logical unit, queuing said data transfer command for execution based on said I/O priority default value previously stored for said logical unit; and
responsive to said CCW for accessing an ECKD disk on said logical unit, queuing said I/O command for execution based on I/O priority set in said prefix or define extent command.
15. (canceled)
16. A method for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, comprising:
receiving from an initiator host selectively an I/O command including an I/O priority default value for accessing a FB disk on a logical unit or a CCW including a prefix or define extent command for accessing an ECKD disk on said logical unit;
responsive to said I/O command being a set default value I/O command, storing said I/O priority default value for said logical unit;
responsive to said I/O command being a data transfer command with respect to said FB disk on said logical unit, queuing said data transfer command for execution based on said I/O priority default value previously stored for said logical unit; and
responsive to said CCW for accessing an ECKD disk on said logical unit, queuing said I/O command for execution based on I/O priority set in said prefix or define extent command.
US12/077,163 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority Abandoned US20080172503A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/077,163 US20080172503A1 (en) 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/683,149 US7366800B2 (en) 2003-10-09 2003-10-09 System and method for dynamically assigning I/O priority
US12/077,163 US20080172503A1 (en) 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/683,149 Division US7366800B2 (en) 2003-10-09 2003-10-09 System and method for dynamically assigning I/O priority

Publications (1)

Publication Number Publication Date
US20080172503A1 true US20080172503A1 (en) 2008-07-17

Family

ID=34422672

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/683,149 Expired - Fee Related US7366800B2 (en) 2003-10-09 2003-10-09 System and method for dynamically assigning I/O priority
US12/077,162 Expired - Fee Related US7660919B2 (en) 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority
US12/077,163 Abandoned US20080172503A1 (en) 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/683,149 Expired - Fee Related US7366800B2 (en) 2003-10-09 2003-10-09 System and method for dynamically assigning I/O priority
US12/077,162 Expired - Fee Related US7660919B2 (en) 2003-10-09 2008-03-17 System and method for dynamically assigning I/O priority

Country Status (1)

Country Link
US (3) US7366800B2 (en)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366800B2 (en) * 2003-10-09 2008-04-29 International Business Machines Corporation System and method for dynamically assigning I/O priority
US7484040B2 (en) * 2005-05-10 2009-01-27 International Business Machines Corporation Highly available removable media storage network environment
US8819088B2 (en) * 2005-07-14 2014-08-26 International Business Machines Corporation Implementing storage management functions using a data store system
US8307128B2 (en) * 2006-12-08 2012-11-06 International Business Machines Corporation System and method to improve sequential serial attached small computer system interface storage device performance
US20080162735A1 (en) * 2006-12-29 2008-07-03 Doug Voigt Methods and systems for prioritizing input/outputs to storage devices
US8250256B2 (en) * 2007-07-24 2012-08-21 International Business Machines Corporation Methods, systems and computer products for user-managed multi-path performance in balanced or unbalanced fabric configurations
US8521963B1 (en) * 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US9262346B2 (en) * 2010-06-21 2016-02-16 Hewlett Packard Enterprises Development LP Prioritizing input/outputs at a host bus adapter
US9092156B1 (en) * 2013-05-30 2015-07-28 Marvell International Ltd. Methods and apparatus for managing storage device commands
US9720618B1 (en) 2013-12-16 2017-08-01 EMC IP Holding Company LLC Maintaining backup snapshots using continuous replication from multiple sources
US10255137B1 (en) 2013-12-16 2019-04-09 EMC IP Holding Company LLC Point-in-time recovery on deduplicated storage
US10031690B1 (en) 2013-12-16 2018-07-24 EMC IP Holding Company LLC Initializing backup snapshots on deduplicated storage
US10157014B1 (en) 2013-12-16 2018-12-18 EMC IP Holding Company LLC Maintaining backup snapshots on deduplicated storage using continuous replication
US10229056B1 (en) 2014-03-25 2019-03-12 EMC IP Holding Company LLC Alignment fixing on a storage system during continuous data replication to deduplicated storage
US9772789B1 (en) 2014-03-25 2017-09-26 EMC IP Holding Company LLC Alignment fixing on a data protection system during continuous data replication to deduplicated storage
US9389800B1 (en) 2014-03-27 2016-07-12 Emc Corporation Synthesizing virtual machine disk backups
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US9535800B1 (en) * 2014-09-30 2017-01-03 EMC IP Holding Company LLC Concurrent data recovery and input/output processing
US9529759B1 (en) * 2016-01-14 2016-12-27 International Business Machines Corporation Multipath I/O in a computer system
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
CN109725829B (en) * 2017-10-27 2021-11-05 伊姆西Ip控股有限责任公司 System and method for end-to-end QoS solution for data storage system
CN109947540B (en) * 2017-12-21 2021-05-25 北京金风科创风电设备有限公司 Wind generating set command processing method and device and wind generating set
CN110895473B (en) * 2018-08-24 2023-05-02 山东华软金盾软件股份有限公司 Self-starting keep-alive system and method based on android mobile equipment

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414818A (en) * 1990-04-06 1995-05-09 Mti Technology Corporation Method and apparatus for controlling reselection of a bus by overriding a prioritization protocol
US5937205A (en) * 1995-12-06 1999-08-10 International Business Machines Corporation Dynamic queue prioritization by modifying priority value based on queue's level and serving less than a maximum number of requests per queue
US6101570A (en) * 1998-07-28 2000-08-08 Compaq Computer Corporation Method and apparatus for fair bus arbitration in multiple initiator SCSI systems
US6122723A (en) * 1998-08-20 2000-09-19 International Business Machines Corporation Switching multi-initiator SCSI devices to a singular target bus
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6202095B1 (en) * 1998-10-07 2001-03-13 International Business Machines Corporation Defining characteristics between processing systems
US6223244B1 (en) * 1998-12-10 2001-04-24 International Business Machines Corporation Method for assuring device access to a bus having a fixed priority arbitration scheme
US6260090B1 (en) * 1999-03-03 2001-07-10 International Business Machines Corporation Circuit arrangement and method incorporating data buffer with priority-based data storage
US20020109343A1 (en) * 2001-02-14 2002-08-15 Tadashi Sugimoto Shock absorbing structure

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6877044B2 (en) 2000-02-10 2005-04-05 Vicom Systems, Inc. Distributed storage management platform architecture
US7366800B2 (en) 2003-10-09 2008-04-29 International Business Machines Corporation System and method for dynamically assigning I/O priority

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414818A (en) * 1990-04-06 1995-05-09 Mti Technology Corporation Method and apparatus for controlling reselection of a bus by overriding a prioritization protocol
US5715406A (en) * 1990-04-06 1998-02-03 Emc Corporation Controlled bus reselection interface and method
US5937205A (en) * 1995-12-06 1999-08-10 International Business Machines Corporation Dynamic queue prioritization by modifying priority value based on queue's level and serving less than a maximum number of requests per queue
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6101570A (en) * 1998-07-28 2000-08-08 Compaq Computer Corporation Method and apparatus for fair bus arbitration in multiple initiator SCSI systems
US6122723A (en) * 1998-08-20 2000-09-19 International Business Machines Corporation Switching multi-initiator SCSI devices to a singular target bus
US6202095B1 (en) * 1998-10-07 2001-03-13 International Business Machines Corporation Defining characteristics between processing systems
US6223244B1 (en) * 1998-12-10 2001-04-24 International Business Machines Corporation Method for assuring device access to a bus having a fixed priority arbitration scheme
US6260090B1 (en) * 1999-03-03 2001-07-10 International Business Machines Corporation Circuit arrangement and method incorporating data buffer with priority-based data storage
US20020109343A1 (en) * 2001-02-14 2002-08-15 Tadashi Sugimoto Shock absorbing structure

Also Published As

Publication number Publication date
US20080189442A1 (en) 2008-08-07
US20050080940A1 (en) 2005-04-14
US7366800B2 (en) 2008-04-29
US7660919B2 (en) 2010-02-09

Similar Documents

Publication Publication Date Title
US7660919B2 (en) System and method for dynamically assigning I/O priority
US6834315B2 (en) Method, system, and program for prioritizing input/output (I/O) requests submitted to a device driver
US8694741B2 (en) Storage system and method of executing commands by controller
US6141707A (en) Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume
KR100992018B1 (en) Control of information units in fibre channel communications
US6044415A (en) System for transferring I/O data between an I/O device and an application program's memory in accordance with a request directly over a virtual connection
US6032217A (en) Method for reconfiguring containers without shutting down the system and with minimal interruption to on-line processing
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
US6041366A (en) System and method for dynamic specification of input/output attributes
US20080162735A1 (en) Methods and systems for prioritizing input/outputs to storage devices
JP2008015888A (en) Load distribution control system and load distribution control method
US10303470B2 (en) Methods for selectively enabling and disabling hardware features
US6430645B1 (en) Fibre channel and SCSI address mapping for multiple initiator support
US6311257B1 (en) Method and system for allocating memory for a command queue
KR20100008363A (en) Physical network interface selection
US6845426B2 (en) Disk cache control for servicing a plurality of hosts
US7330930B1 (en) Method and apparatus for balanced disk access load distribution
US10242053B2 (en) Computer and data read method
US6915524B2 (en) Method for controlling multiple storage devices from a single software entity
US11194742B2 (en) Detecting potentially overlapping input/output queues
EP0805397A2 (en) Method for implementing a non-volatile caching product for networks and cd-roms
US20090063716A1 (en) Prioritising Data Processing Operations
US10740284B1 (en) Techniques for efficiently performing filesystem reorganization tasks for different filesystems
US7694038B2 (en) Maintaining and using nexus information on a host, port and device connection
US11055218B2 (en) Apparatus and methods for accelerating tasks during storage caching/tiering in a computing environment

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION