US20070299904A1 - Method, system, and program for remote resource management - Google Patents

Method, system, and program for remote resource management Download PDF

Info

Publication number
US20070299904A1
US20070299904A1 US11/851,878 US85187807A US2007299904A1 US 20070299904 A1 US20070299904 A1 US 20070299904A1 US 85187807 A US85187807 A US 85187807A US 2007299904 A1 US2007299904 A1 US 2007299904A1
Authority
US
United States
Prior art keywords
remote
resource type
processor
remote operation
resource
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
US11/851,878
Inventor
James Springer
Thomas Jarvis
Gail Spear
Sam Werner
Richard Martinez
Matthew Sanchez
Theresa Brown
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/851,878 priority Critical patent/US20070299904A1/en
Publication of US20070299904A1 publication Critical patent/US20070299904A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • the present invention relates to a method, system, and program for managing resources of a remote processor.
  • Computing systems often include one or more host computers (“hosts”) for processing data and running application programs, direct access storage devices (DASDs) for storing data, and a storage controller for controlling the transfer of data between the hosts and the DASD.
  • Storage controllers also referred to as control units or storage directors, manage access to a storage space often comprised of numerous hard disk drives connected in a loop architecture, otherwise referred to as a Direct Access Storage Device (DASD).
  • Hosts may communicate Input/Output (I/O) requests to the storage space through the storage controller.
  • I/O Input/Output
  • Each hardware cluster comprises a processor complex, cache, non-volatile storage (NVS), such as a battery backed-up Random Access Memory (RAM), and separate power supply to provide connection paths to the attached storage.
  • NVS non-volatile storage
  • RAM battery backed-up Random Access Memory
  • the NVS in one cluster backs up write data from the cache in the other cluster so that if one cluster fails, the write data in the cache of the failed cluster is stored in the NVS of the surviving cluster.
  • I/O Input/Output
  • each cluster may be assigned to handle I/O requests for specific logical storage devices configured within the physical storage devices.
  • a cluster can not only execute operations locally using the capabilities of the local cluster itself, but can also make a request to have an operation executed on a remote cluster in the storage controller system. Since the capabilities of the remote cluster are typically limited, it is often desirable that the local cluster refrain from requesting too many remote operations which could result in the capabilities of the remote cluster being exceeded.
  • FIG. 1 shows an example of a multiple cluster system 10 comprising a first cluster 12 communicating with a second cluster 14 over a bus 16 .
  • an application program 18 operating under an operating system 20 of the first or local cluster 12 instructs a mail manager 22 to send a remote operation request to the second or remote cluster 14 .
  • the mail manager 22 folds the remote operation request into a mail message and stores the mail message containing the remote operation request in a memory area 24 of the remote cluster 14 .
  • the memory area 24 referred to in FIG. 1 as a “incoming mail queue” functions as a queue of mail messages, some of which include remote operations waiting to be executed.
  • Each remote operation is executed on the remote cluster 14 .
  • the remote cluster 14 has a mail manager 26 which examines the operation code of the remote operation in each mail message stored in the queue 24 in the order in which they are stored in the queue 24 . Using the operation code, the mail manager 26 invokes the remote operation. Once the remote operation is initiated, the mail message entry is removed from the queue 24 and a mail message is sent back to the local cluster 12 indicating that an additional remote operation may be sent to the remote cluster 14 .
  • the mail manager 22 of the local cluster 12 is kept apprised by the mail manager 26 of the remote cluster 14 , of how many mail message entries remain in the queue 24 of the remote cluster 14 .
  • the mail manager has a counter 37 which keeps a count of the permissible number of mail messages which may be sent to the other cluster 14 and stored as entries in the incoming mail queue 24 before mail messages are removed from the queue 24 .
  • each count of the counter 37 may be thought of as a “credit” permitting the sending of a mail message to the other cluster 14 .
  • the maximum count or credits of the counter 37 is equal to the total capacity or total number of entries of the incoming mail queue 24 .
  • the mail messages may include remote operation requests.
  • the mail manager 26 so informs the mail manager 22 and the credits of the counter 37 are incremented.
  • the mail manager 22 of the local cluster Withholds sending new mail messages to the remote cluster queue 24 until additional credits are applied to the counter 37 , indicating that slots have become available in the queue 24 .
  • the mail manager 22 stores remote operation requests and other mail in an outgoing mail queue 28 until the remote operation requests can be sent as mail messages to the remote cluster 14 .
  • the second cluster 14 similarly has one or more application programs 38 operating under an operating system 40 , which instructs the mail manager 26 to send a remote operation request to the first cluster 14 in the form of a mail message.
  • the mail manager 26 stores the mail message containing the remote operation request as an entry in an incoming mail queue 44 of the first cluster 12 . Operation of the remote operation request is invoked by the mail manager 22 of the first cluster 12 . Once the incoming mail queue 44 of the first cluster 12 becomes full as indicated by a credit counter 46 , the mail manager 26 of the second cluster 14 stores the mail messages in an outgoing mail queue 48 until additional space becomes available in the queue 44 .
  • redundant clusters are to ensure that if one cluster fails, the storage controller or other device may continue to operate. In such redundant applications, it is often desired that at least one cluster operate at all times so that operation of the device is not interrupted.
  • the software is often upgraded on one cluster while the other cluster continues to run. Then, the upgraded cluster is restarted and the software on the other cluster is upgraded.
  • the booted cluster may inform the other cluster of the software level of the booted cluster. In one prior art system, this software level information may take the form of a version number of the loaded software.
  • a remote operation request of a first resource type sent to a remote processor from a local processor may be added as an entry in a first queue of remote operation requests of the first resource type awaiting execution by a first resource in a remote processor.
  • a remote operation request of a second resource type sent to the remote processor from the local processor may be added as an entry in a second queue of remote operations of the second resource type awaiting execution by a second resource in a remote processor.
  • the remote operation request entry may be removed from the first queue.
  • the remote processor may send to the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution.
  • the remote operation request entry may be removed from the second queue.
  • the remote processor may send to the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
  • the local processor may decrement a first count of credits for each remote operation of the first resource type sent to the remote processor.
  • the local processor may increment the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor.
  • Each credit may represent a permissible outstanding remote operation request.
  • the local processor may decrement a second count of credits for each remote operation of the second resource type sent to the remote processor.
  • the local processor may increment the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
  • the local processor may queue a remote operation request of the first resource type in a third queue of remote operation requests of the first resource type awaiting to be sent to the remote processor to be executed in connection with the first resource type of the remote processor.
  • the local processor may send a remote operation request of the first resource type from the third queue to the remote processor to be executed in connection with the first resource type of the remote processor.
  • the local processor may queue a remote operation request of the second resource type in a fourth queue of remote operation requests of the second resource type awaiting to be sent to the remote processor to be executed in connection with the second resource type of the remote processor.
  • the local processor may send a remote operation request of the second resource type from the fourth queue to the remote processor to be executed in connection with the second resource type of the remote processor.
  • the remote processor may increment a third count of credits for each initiation of execution of a remote operation of the first resource type and may decrement the third count of credits for each acknowledgment sent that an additional remote operation request of the first resource type may be sent to the remote processor for execution.
  • the remote processor may increment a fourth count of credits for each initiation of execution of a remote operation of the second resource type and may decrement the fourth count of credits for each acknowledgment sent that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
  • the remote processor may delay sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution until the third count of credits is above a predetermined threshold.
  • the fourth count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution until the fourth count of credits is above a predetermined threshold.
  • the local processor may attach an operation code identifying the resource type of a remote operation request prior to sending a remote operation request to the remote processor.
  • the remote processor may decode the operation code of a remote operation request upon receipt of the remote operation request by the remote processor to identify the resource type.
  • the first queue has a first maximum number of entries and the first count of credits has a first maximum which matches the first maximum number of entries of the first queue.
  • the second queue has a second maximum number of entries and the second count of credits has a second maximum which matches the second maximum number of entries of the second queue.
  • FIG. 1 . 1 illustrates a prior art mail manager for sending mail messages between processors.
  • FIG. 2 illustrates an example of a computing environment in which aspects of the invention are implemented
  • FIGS. 3A-3B illustrate an architecture of a remote operation manager of first and second processors utilized with implementations of the invention
  • FIGS. 4-5 illustrate logic to manage resources between processors in accordance with implementations of the invention
  • FIGS. 6A-6B each illustrate information in a remote operation manager configuration structure in accordance with implementations of the invention.
  • FIG. 7 illustrates logic to configure a remote operation manager in accordance with implementations of the invention.
  • FIG. 8 illustrates an architecture of computing components in a network environment, such as the hosts, storage controllers, clusters, and any other computing devices.
  • FIG. 2 illustrates a computing architecture in which aspects of the invention are implemented.
  • One or more hosts 102 a, 102 b . . . 102 n are in data communication with a storage system 104 , such as a DASD or any other storage system known in the art, via a storage controller 106 .
  • the host 102 may be any computing device known in the art, such as a server, mainframe, workstation, personal computer, hand held computer, laptop, telephony device, network appliance, etc.
  • the storage controller 106 and host system(s) 102 communicate via a network 108 , which may comprise a Storage Area Network (SAN), Local Area Network (LAN), Intranet, the Internet, Wide Area Network (WAN), etc.
  • SAN Storage Area Network
  • LAN Local Area Network
  • WAN Wide Area Network
  • the storage system 104 may be comprised of hard disk drives, tape cartridge libraries, optical disks, or any suitable non-volatile storage medium known in the art.
  • the storage system 104 may be arranged as an array of storage devices, such as a Just a Bunch of Disks (JBOD), DASD, Redundant Array of Independent Disks (RAID) array, virtualization device, etc.
  • the storage controller 106 may comprise any storage controller or server known in the art, such as the IBM Enterprise Storage Server (ESS) or any other storage controller known in the art.
  • the storage space in the storage controller 104 is configured as a plurality of logical devices (LD) 110 a, 110 b . . . 10 n.
  • LD logical devices
  • the storage controller 106 includes two separate clusters 120 a, 120 b of hardware components to provide redundancy for improved availability. Although the illustrated embodiment is described in connection with a storage controller having clusters, it is appreciated that the invention may be applicable to a variety of systems utilizing multiple processors in which one processor can direct operations to be executed by another processor.
  • Each cluster 120 a, 120 b of the illustrated embodiment may be maintained on a separate power boundary, and includes a processor complex 122 a, 122 b, a cache 124 a, 124 b, and a non-volatile storage unit (NVS) 126 a, 126 b.
  • the NVS 126 a, 126 b may comprise a battery backed-up RAM or any other type of non-volatile or volatile backup cache used to backup data in cache.
  • the hosts 102 a, 102 b . . . 102 n would submit application I/O requests directed to a target logical device (LD) 110 a, 110 b . . .
  • the NVS 126 a, 126 b in one cluster 120 a, 120 b is used to backup write data in the cache 124 b, 124 a in the other cluster 120 b, 120 a, e.g., NVS 126 a backs up write data in cache 124 b.
  • cluster 120 a will be described as the local or sending cluster and cluster 120 b as the remote or receiving cluster. Notwithstanding, the logic described in FIGS. 3-7 is capable of being executed by both processor complexes 122 a, 122 b in both clusters 120 a, 120 b in the storage controller 106 so that either cluster 102 a, 102 b may direct remote operations to be executed using the resources of the other.
  • FIGS. 3A and 3B shows an example of the processor complex 122 a communicating with the second processor complex 122 b over a bus 216 .
  • each processor complex 122 a, 122 b has an application program 218 a, 218 b operating under an operating system 220 a, 220 b, which instructs a mail manager 222 a, 222 b to send a remote operation request to the other processor complex 122 a, 122 b.
  • Each mail manager 222 a, 222 b has an incoming mail queue 224 a, 224 b and operates in a manner similar to the mail managers 22 , 42 of FIG. 1 .
  • the mail manager 222 a has an incoming mail queue 224 a, 224 b and operates in a manner similar to the mail managers 22 , 42 of FIG. 1 .
  • the mail manager 222 a of the processor complex 122 a stores remote operation requests in an outgoing mail queue 228 a until the remote operation requests can be sent to the other processor complex 122 b.
  • the other mail manager 222 b similarly stores the remote operation request of the processor complex 122 b as an entry in the incoming mail queue 224 a of the other processor complex 122 a.
  • the mail manager 222 b of the processor complex 122 b stores remote operation requests in an outgoing mail queue 228 b until the remote operation requests can be sent to the other processor complex 122 a. It is appreciated that other mail type arrangements may be used to send operations from one processor to another processor for execution by the other processor.
  • each processor complex 122 a, 122 b has a plurality of resources, resource 1 , resource 2 . . . resource N, each resource being used in connection with the execution of operations.
  • each resource may be a type of Task Control Blocks, each of which acts as a “ticket” which permits a task to proceed.
  • a resource may be any finite item which is dynamically allocated and which is used to initiate, continue or complete an operation.
  • the processor complexes may have only one type of resource.
  • each processor complex 122 a, 122 b has a resource manager 226 a, 226 b which manages the appropriate resource 1 , resource 2 . . . or resource N of the processor complex which permits an operation to be initiated by that resource.
  • the resource manager 226 a includes a control set 250 a 1 , 250 a 2 . . . 250 a N for each type of resource, that is, resource 1 , resource 2 . . . resource N, it is managing of the processor complex 122 a.
  • the resource manager 226 b includes a control set 250 b 1 , 250 b 2 . . . 250 b N for each type of resource, that is, resource 1 , resource 2 .
  • resource 1 of processor complex 122 a has associated with it control set 250 a 1 of resource manager 226 a.
  • such an arrangement permits the resource managers 226 a, 226 b to manage multiple types of resources without reference to the details of the type of resources it is allocating.
  • FIG. 4 illustrates operations of the resource manager 226 a when an application 218 a of the processor complex 122 a requests execution of a remote operation by the other processor complex 122 b.
  • an application 218 a invokes the resource manager 226 a which receives (block 260 ) the request for the remote operation.
  • the resource manager 226 a identifies (block 262 ) which of the resources, resource 1 -resource n, of the processor complex 122 b is needed to execute the requested remote operation.
  • the resource manager 226 a uses the appropriate control set 250 a 1 . . . 250 a N for the identified resource 1 -resource N to determine whether the remote operation can be sent to the remote processor complex 122 b for execution or the sending of the remote operation should be delayed.
  • Each control set 250 a 1 - 250 a N keeps a count of the permissible outstanding remote operations for that resource in an outgoing operation counter 264 a 1 - 264 a N.
  • the maximum possible count for each control set 250 a 1 - 250 a N represents the maximum number of remote operations that can be sent to the other processor complex 122 b without exceeding the available capacity of the associated resource 1 -resource N.
  • each control set 250 b 1 - 250 b N of the other processor complex 122 b has an incoming operation queue 265 b 1 - 265 b N in which remote operations may be queued if the particular resource associated with the control set is not available to initiate the remote operation.
  • Each incoming operation queue 265 b 1 - 265 b N of the other processor complex 122 b has a predetermined capacity for storing remote operations awaiting initiation.
  • the maximum count of the outgoing operation credit counter 264 a 1 - 264 a N of each control set 250 a 1 - 250 a N of the processor complex 122 a corresponds to the capacity of the counterpart incoming operation queue 265 b 1 - 265 b N of the other processor complex 122 b.
  • the count of permissible remote operations can be thought of as “credits” in which the resource manager 226 a is permitted to send a remote operation to be executed in connection with an associated resource of the other processor complex 122 b for each credit stored on the associated counter 264 a 1 - 264 a N of the identified control set 250 a 1 - 250 a N.
  • the remote operation is sent (blocks 270 - 274 ) to the other processor complex 122 b of the remote cluster 120 b.
  • the count of the associated outgoing operation credit counter 264 a 1 - 264 a N is then decremented (block 276 ).
  • the count of the appropriate credit counter 264 a 1 - 264 a N is decremented as remote operations are sent to the other processor complex 122 b.
  • the resource manager 226 a queues (block 280 ) the remote operation as an entry in the associated outgoing operation queue 280 a 1 - 280 a N of the control set 250 a 1 - 250 a N.
  • the remote operation will remain in the queue 280 a 1 - 280 a N until an outgoing operation credit becomes available for the associated control set 250 a 1 - 250 a N.
  • the outgoing operation credits are incremented as remote operations are completed on the remote processor complex 122 b as described in connection with FIG. 5 below.
  • the resource manager 226 a identifies (block 262 ) control set 250 a 1 for the resource 1 and checks the outgoing operation counter 264 a 1 of the control set 250 a 1 . When the number of credits remaining as indicated by the outgoing operation credit counter 264 a 1 is greater than zero (block 266 ), the remote operation is sent (blocks 270 - 274 ) to the other processor complex 122 b of the remote cluster 120 b and the outgoing operation credit counter 264 a 1 is decremented (block 276 ). Otherwise, the resource manager 226 a queues (block 280 ) the remote operation as an entry in the associated outgoing operation queue 280 a 1 of the control set 250 a 1 until a credit for control set 250 a 1 becomes available.
  • thresholds may be selected, depending upon the particular application.
  • the resource managers 226 a sends a remote operation request to the other processor complex 122 b by placing the requested remote operation in a mail message and embedding (block 270 ) a resource manager operation code into the mail message.
  • the resource manager notes the count indicated by an incoming operation credit counter 282 a 1 - 282 a N and embeds this count along with the resource manager operation code into the mail message.
  • This mail message is passed (block 274 ) to the mail manager 222 a which stores it in the incoming mail queue 224 b of the mail manager 228 b of the processor complex 122 b.
  • the resource manager 226 a Upon passing the mail message containing the remote operation request to the mail manager 222 a, the resource manager 226 a decrements (block 276 ) the associated outgoing operation credit counter 264 a 1 - 264 a N of the identified control set 250 a 1 - 250 a N associated with the resource of resource 1 -resource N which will execute the requested remote operation.
  • FIG. 4 illustrates operations of the resource manager 122 b when an application 218 b of the processor complex 122 b requests execution of a remote operation by the other processor complex 122 a.
  • each control set 250 b 1 - 250 b N of the resource manager 122 b includes an outgoing operation credit counter 264 b 1 - 264 b N to keep track of permissible outstanding remote operations for each associated resource 1 -resource N of the other processor complex 122 a.
  • Each control set 250 b 1 - 250 b N includes an outgoing operation queue 280 b 1 - 280 b N to store requested remote operation requests until a credit becomes available to send the remote operation request to the other processor complex 122 a.
  • Each control set 250 b 1 - 250 b N still further includes an incoming operation credit counter 282 b 1 - 282 b N described below.
  • FIG. 5 illustrates operations of the resource manager 226 b when a request for a remote operation is received (block 300 ) from the other processor complex 122 a.
  • the mail manager 222 a of the processor complex 122 a writes the mail message containing the requested remote operation as an entry in the incoming mail queue 224 b of the mail manager 222 b of the processor complex 122 b.
  • the mail manager 222 b reads the resource manager operation code embedded in the mail message by the resource manager 226 a of the processor complex 122 a as described above, and informs the resource manager 226 b of the processor complex 122 b by passing a pointer to the mail message entry to the resource manager 226 b.
  • the resource manager 226 b extracts (block 302 ) the requested operation from the mail message and identifies the control set of the control sets 250 b 1 - 250 b N which is associated with the particular resource, resource 1 -resource N, needed to execute the requested remote operation in the mail message.
  • processor complex 122 b If the requested operation is successfully initiated (block 306 ), that is the resource of resource 1 -resource N was available for the requested operation, processor complex 122 b is ready for the processor complex 122 a to send another remote operation request for that particular resource 1 -resource N. Hence, an incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N is incremented (block 308 ), to indicate that another remote operation may be sent by the processor complex 122 a.
  • the requested operation was not initiated (block 306 ) because the resource could not be allocated to initiate the requested remote operation
  • the operation is placed (block 310 ) as an entry in the incoming operation queue 265 b 1 - 265 b N of the identified control set.
  • the incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N is not incremented because a slot of the incoming operation queue 265 b 1 - 265 b N was used to store the queued remote operation.
  • the resource manager 226 a may continue to send remote operation requests for that resource 1 -resourceN so long as there are credits indicated by the associated outgoing operation credit counter 264 a 1 - 264 a N as described above until the credits are used up, indicating that the associated incoming operation queue 265 b 1 - 265 b N is filled to capacity.
  • the first remote operation in the incoming operation queue 265 a 1 - 265 a N to be executed in connection with that resource 1 -resource N is initiated (block 312 ) and removed (block 314 ) from the incoming operation queue 265 a 1 - 265 a N.
  • the incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N may then be incremented (block 308 ) as described above to indicate that another remote operation request may be sent by the other processor complex 122 a.
  • the processor complex 122 a may be informed of the availability of additional credits in a variety of manners.
  • the resource manager 226 b compares (block 320 ) the accumulated credit count as indicated by the particular incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N to a particular threshold and if the accumulated credits exceed this threshold, the resource manager sends (block 322 ) the credit information to the processor complex 122 a in a mail message via the mail manager 222 b.
  • Each credit sent to the processor complex 122 a is an acknowledgment that a remote operation request has been successfully initiated.
  • the particular incoming operation credit counter 282 b 1 - 282 b N is reset (block 324 ) to await the accumulation of further credits as incoming operations are initiated. If the accumulated credits do not exceed (block 320 ) this threshold, the incoming operation credits are permitted to continue to accumulate as indicated by the incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N.
  • the resource manager 226 b attaches (block 270 , FIG. 4 ) the credit information of the incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N to the mail message containing the remote operation before it is sent.
  • the incoming operation credit counter 282 b 1 - 282 b N of the identified control set 250 b 1 - 250 b N is reset (block 330 ).
  • the resource manager 122 b extracts (block 302 ) the requested operation from the mail message and identifies the control set 250 b 1 which is associated with the resource 1 needed to execute the remote operation of the mail message. If the requested operation is successfully initiated (block 306 ), that is the resource 1 was available for the requested operation, processor complex 122 b is ready for the processor complex 122 a to send another remote operation request for resource 1 . Hence, an incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is incremented (block 308 ), to acknowledge when sent, that another remote operation may be sent by the processor complex 122 a.
  • the requested operation was not initiated (block 306 ) because the resource 1 could not be allocated to initiate the requested remote operation
  • the operation is placed (block 310 ) in the incoming operation queue 265 b 1 of the identified control set 250 b 1 .
  • the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is not incremented because a slot of the incoming operation queue 265 b 1 was used to store the queued remote operation.
  • the resource manager 226 a may continue to send remote operation requests for that resource 1 so long as there are credits indicated by the associated outgoing operation credit counter 264 a 1 as described above until the credits are used up, indicating that the incoming operation queue 265 b 1 is filled to capacity.
  • the first remote operation in the incoming operation queue 265 a 1 to be executed in connection with resource 1 is initiated (block 312 ) and removed (block 314 ) from the incoming operation queue 265 a 1 .
  • the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 may then be incremented (block 308 ) as described above to indicate that another remote operation request may be sent by the other processor complex 122 a for resource 1 .
  • the resource manager 226 b compares (block 320 ) the accumulated credit count as indicated by the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 to a particular threshold and if the accumulated credits exceed this threshold, the resource manager sends (block 322 ) the credit information to the processor complex 122 a in a mail message via the mail manager 222 b.
  • the incoming operation credit counter 282 b 1 is reset (block 324 ) to await the accumulation of further credits as incoming operations are initiated. If the accumulated credits do not exceed (block 320 ) this threshold, the incoming operation credits are permitted to continue to accumulate as indicated by the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 .
  • the resource manager 226 b attaches (block 270 , FIG. 4 ) the credit information of the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 to the mail message containing the remote operation before it is sent.
  • the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is reset (block 330 ).
  • FIG. 5 likewise illustrates operations of the resource manager 226 a when a request for a remote operation is received from the other processor complex 122 b or when a requested remote operation queued in one of the incoming operation queues 265 a 1 - 265 a N is initiated.
  • FIG. 4 also illustrates operations of the resource manager 226 a when credit information is received (block 400 ) from the other processor complex 122 b.
  • the resource manager 226 a identifies (block 402 ) the control set 250 a 1 . . . 250 a N to which the credits from the other processor complex 122 b apply.
  • the resource manager 226 a applies (block 404 ) the received credits to the outgoing operation credit counter 264 a 1 - 264 N of the identified control set 250 a 1 . . . 250 a N.
  • Each applied credit increments the counter 264 a 1 - 264 a N and thus will permit the resource manager 226 a to send another remote operation to the other processor complex 122 b where each remote operation is executed in connection with the associated resource of resource 1 -resource N of the identified control set 250 a 1 . . . 250 a N. If (block 406 ) there is a remote operation request in the associated outgoing operation queue 260 b 1 - 260 b N, that remote operation request is sent (blocks 270 - 330 ) to the other processor complex 122 b for execution. Control returns to block 260 and any remaining queued remote operation requests are sent until the credits of the associated outgoing operation credit counter 264 a 1 - 264 a N are used up.
  • the resource manager 226 a awaits the receipt of additional credits from the other processor complex 122 b to permit any remaining queued remote operation requests for the control set 250 b 1 - 250 b N to be sent.
  • FIG. 4 likewise illustrates operations of the resource manager 226 b when credit information is received from the other processor complex 122 a.
  • the software when upgrading the software or code of a device or system having multiple clusters, the software is often upgraded on one cluster while the other cluster continues to run. Then, the upgraded cluster is restarted and the software on the other cluster is upgraded. As a consequence, there may be intervals when the software code running the two clusters may be not be at the same level on both clusters.
  • FIG. 6 a shows an array 600 a of configuration structures
  • FIG. 6 b shows an array 600 b of configuration structures which, as described in greater detail below, facilitate changes being made to the resource managers 226 b and 226 a, respectively, in a concurrent code load environment.
  • the array 600 a includes a master configuration structure 602 a and a plurality of control set configuration structures 604 a 1 , 604 a 2 604 a N for configuring the resource manager 226 b of the processor complex 122 b.
  • the array 600 b includes a master configuration structure 602 b and a plurality of control set configuration structures 604 b 1 , 604 b 2 . . . 604 b N for configuring the resource manager 226 a of the processor complex 122 a.
  • the array 600 b of configuration structures 602 b, 604 b 1 - 604 b N contains information about the control sets 250 b 1 , 250 b 2 . . . 250 b N of the resource manager 226 b of the processor complex 122 b.
  • the sending and receiving clusters agree on how many outstanding remote operation requests that the receiving cluster can accept for each resource 1 -resourceN.
  • the resource manager 226 b of the processor complex 122 b populates the configuration structure 600 b with this information and passes the array 600 b to the cluster that will be sending the remote operation requests, that is, the cluster 120 a, via the mail manager 222 b ( FIG. 3B ).
  • the resource manager 226 a of the processor complex 122 a When received, the resource manager 226 a of the processor complex 122 a extracts the configuration information from the array 600 b and configures the control sets 250 a 1 , 250 a 2 . . . 250 a N of the resource manager 226 a of the processor complex 122 a to send the remote operation requests for each resource 1 -resourceN.
  • the array 600 b includes one resource control set configuration structure 604 b 1 - 604 b N for each resource control set 250 b 1 - 250 b N of the resource manager 226 b.
  • Each resource configuration structure 604 b 1 - 604 b N contains information about its associated resource control set 250 b 1 - 250 b N of the resource manager 226 b which is used to configure the associated resource control set 250 a 1 - 250 a N of the resource manager 226 a.
  • each resource configuration structure 604 b 1 - 604 b N includes a resource ID field 606 b 1 - 606 b N which identifies the resource control set 250 b 1 - 250 b N of the processor complex 122 b, to which that particular configuration structure pertains.
  • each resource configuration structure 604 b 1 - 604 b N includes an incoming operation queue size field 608 b 1 - 6068 N which specifies the size of the incoming operation queue 265 b 1 - 265 b N of the resource control set 250 b 1 - 250 b N identified by the field 606 b 1 - 606 b N.
  • the master configuration structure 602 b contains a field 610 b which identifies how many resource control set configuration structures 604 b 1 - 604 b N the array 600 b has and hence how many resource control sets 250 b 1 - 250 b N the resource manager 226 b has.
  • the master configuration structure 602 b also contains a field 612 b which identifies the version of the software code of the resource manager 226 b.
  • the master configuration structure 602 b has a plurality of reserved fields 614 b which reserve space for configuration information for future versions of control sets.
  • Each resource configuration structure 604 b 1 - 604 b N similarly has plurality of reserved fields 616 b which provide similar capabilities.
  • FIG. 7 illustrates operations of the resource manager 226 a of the processor complex 122 a of the remote operation sending cluster 120 a in extracting the configuration information from the configuration structure array 600 b sent to the cluster 120 a by the resource manager 226 b of the remote operation receiving cluster 120 b.
  • the resource manager 226 a of the cluster 120 a Upon receipt (block 700 ) of the configuration structure 600 b from the cluster 120 b, the resource manager 226 a of the cluster 120 a examines (block 702 ) field 612 b of the master configuration structure 602 b and compares the version of the software code of the resource manager 226 b of the cluster 120 b to the version of the software code of the resource manager 226 a of the cluster 120 a.
  • the resource manager 226 a of the cluster 120 a blocks (block 704 ) the sending of remote operation requests to the other cluster 120 b which may not be supported by the receiving cluster 120 b.
  • the resource manager 226 a After reading the master configuration structure 602 b, the resource manager 226 a reads (block 706 ) a resource control set configuration structure 604 b 1 - 604 b N of the array 600 b. From the read resource control set configuration structure 604 b 1 - 604 b N, the resource manager 226 b examines (block 708 ) field 606 b 1 - 606 b N to identify the resource of resource 1 -resourceN to which the configuration information contained in the particular resource control set configuration structure 604 b 1 - 604 b N which was read pertains.
  • the resource manager 226 a also identifies the resource control set of control sets 250 a 1 - 250 a N for that identified resource or allocates a control set if one has not already been allocated.
  • the incoming operation credit counter 282 a 1 - 282 a N of the identified resource control set 250 a 1 - 250 a N is set (block 710 ) so that the initial count of the counter 282 a 1 - 282 b N matches the incoming operation queue size of the counterpart resource control set 250 b 1 - 250 b N of the receiving cluster 120 b.
  • the queue size read (block 710 ) from the field 608 b 1 is the size of the incoming operation queue 265 b 1 of the resource 1 control set 250 b 1 of the resource manager 226 b of the receiving cluster 120 b.
  • the size of the queue 265 b 1 is used to initialize the count of the incoming operation credit counter 282 a 1 of the resource 1 control set 250 a 1 .
  • the resource manager 226 a of the remote operation sending cluster 120 a will limit the number of outstanding remote operation requests sent to the receiving cluster 120 b to be executed in connection with resource 1 of the cluster 120 b, such that the capacity of the incoming operation queue 265 b 1 of the receiving cluster 120 b for remote operation requests of the resource 1 type will not be exceeded.
  • the resource manager 226 a determines (block 712 ) whether all of the resource control set configuration structures 604 b 1 - 604 b N of the array 600 b have been read. This may be determined, for example, by comparing the number of control set configuration structures 604 b 1 - 604 b N read to the number of control set configuration structures 604 b 1 - 604 b N sent to the resource manager 226 a as indicated by the field 610 b of the master configuration structure 602 b of the array 600 b.
  • Each remaining control set configuration structure 604 b 1 - 604 b N is read and the counterpart resource control set 250 a 1 - 250 a N is configured using the information read from the read control set configuration structure 604 b 1 - 604 b N until all of the control set configuration structures 604 b 1 - 604 b N of the array 600 b have been read.
  • the resource identification fields 606 b 1 - 606 b N readily permit the resource control set configuration structures 604 b 1 - 604 b N to be sent by the receiving cluster 102 b to the remote operation sending cluster 102 a in any order.
  • the aforementioned fields and array structure facilitate changes to the resource manager control sets.
  • one or more fields may be modified or eliminated and the configuration structures modified, depending upon the particular application.
  • the array 600 a of configuration structures 602 a, 604 a 1 - 604 a N contains information about the control sets 250 a 1 , 250 a 2 . . . 250 a N of the resource manager 226 a of the processor complex 122 a.
  • the resource manager 226 a of the processor complex 122 a populates the configuration structure 600 a with this information and passes the array 600 a to the cluster that will be sending the remote operation requests, that is, the cluster 120 b, via the mail manager 222 a ( FIG. 3A ).
  • the resource manager 226 b of the processor complex 122 b When received, the resource manager 226 b of the processor complex 122 b extracts the configuration information from the array 600 a and configures the control sets 250 b 1 , 250 b 2 . . . 250 b N of the resource manager 226 b of the processor complex 122 b to send the remote operation requests for each resource 1 -resourceN.
  • the array 600 a includes one resource control set configuration structure 604 a 1 - 604 a N for each resource control set 250 a 1 - 250 a N of the resource manager 226 a.
  • Each resource configuration structure 604 a 1 - 604 a N contains information about its associated resource control set 250 a 1 - 250 a N of the resource manager 226 a which is used to configure the associated resource control set 250 b 1 - 250 b N of the resource manager 226 b.
  • each resource configuration structure 604 a 1 - 604 a N includes a resource ID field 606 a 1 - 606 a N which identifies one of the resource control sets 250 a 1 - 250 a N of the processor complex 122 a.
  • each resource configuration structure 604 a 1 - 604 a N includes an incoming operation queue size field 608 a 1 - 6068 N which specifies the size of the incoming operation queue 265 a 1 - 265 a N of the identified resource control sets 250 a 1 - 250 a N.
  • the master configuration structure 602 a contains a field 610 a which identifies how many resource control set configuration structures 604 a 1 - 604 a N the array 600 a has and hence how many resource control sets 250 a 1 - 250 a N the resource manager 226 a has.
  • the master configuration structure 602 a also contains a field 612 a which identifies the version of the software code of the resource manager 226 a.
  • the master configuration structure 602 a has a plurality of reserved fields 614 a which reserve space for configuration information for future versions of control sets.
  • Each resource configuration structure 604 a 1 - 604 a N similarly has plurality of reserved fields 616 a which provide similar capabilities.
  • FIG. 7 also illustrates operations of the resource manager 226 b of the processor complex 122 b of the remote operation sending cluster 120 b in extracting the configuration information from the configuration structure array 600 a sent to the cluster 120 b by the resource manager 226 a of the remote operation receiving cluster 120 a.
  • the described techniques for managing resources may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
  • article of manufacture refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.).
  • Code in the computer readable medium is accessed and executed by a processor complex.
  • the code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network.
  • the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
  • the “article of manufacture” may comprise the medium in which the code is embodied.
  • the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed.
  • the article of manufacture may comprise any information bearing medium known in the art.
  • processor complexes 122 a, and 122 b certain operations were described as performed by the processor complexes 122 a, and 122 b. In alternative implementations, certain operations described as performed by the processor complexes may be performed by a variety of computers, processors, and controllers.
  • the outgoing operation counter 264 a 1 may be initialized to “0” for example to represent the same 25 credits.
  • the count of credits may then be “decremented” by increasing the count of the counter 264 a 1 until the counter 264 a 1 reaches “25” indicating that the credits have been used up.
  • dual clusters were provided. In alternative implementations, there may be more than two clusters and resource management may be practiced in any of the other clusters.
  • FIGS. 4, 5 and 7 show certain events occurring in a certain order.
  • certain operations may be performed in a different order, modified or removed. Morever, steps may be added to the above described logic and still conform to the described implementations. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
  • variable N is used to denote any integer variable for certain of the described elements and may indicate a same or different integer value when used in different instances.
  • FIG. 8 illustrates one implementation of a computer architecture 800 of the network components, such as the hosts and storage controller clusters shown in FIG. 1 .
  • the architecture 800 may include a processor 802 (e.g., a microprocessor), a memory 804 (e.g., a volatile memory device), and storage 806 (e.g., a non-volatile storage, such as magnetic disk drives, optical disk drives, a tape drive, etc.).
  • the storage 806 may comprise an internal storage device or an attached or network accessible storage. Programs in the storage 806 are loaded into the memory 804 and executed by the processor 802 in a manner known in the art.
  • the architecture further includes a network card 808 to enable communication with a network.
  • An input device 810 is used to provide user input to the processor 802 , and may include a keyboard, mouse, pen-stylus, microphone, touch sensitive display screen, or any other activation or input mechanism known in the art.
  • An output device 812 is capable of rendering information transmitted from the processor 802 , or other component, such as a display monitor, printer, storage, etc.

Abstract

Provided are a method, system, and program for managing resources in which a local processor sends remote operation requests to be executed by a remote processor having multiple resources. In the illustrated embodiment, the local processor and the remote processor each have a resource manager, each of which maintains a control set for each resource of the remote processor. Each control set of the remote processor resource manager includes a queue for queuing remote operation requests awaiting execution in connection with the resource associated with the control set. Each control set of the local processor resource manager includes a credit counter which keeps track of permissible outstanding remote operation requests. Each local processor control set credit counter is decremented for each remote operation request for the associated resource sent to the remote processor and is incremented for each acknowledgment received from the remote processor. For each remote processor control set, the remote processor resource manager sends an acknowledgment for each remote operation request initiated in connection with the associated resource. For each local processor control set, the local processor resource manager queues remote operation requests if the control set credit counter falls below a threshold after being initialized in accordance with the capacity of the associated remote processor control set queue.

Description

  • RELATED APPLICATIONS
  • This application is a continuation application of copending application Ser. No. 10/465,177, filed Jun. 19, 2003 entitled METHOD, SYSTEM, AND PROGRAM FOR REMOTE RESOURCE MANAGEMENT, which application is hereby incorporated by reference in its entirety. This application is related to copending application entitled METHOD, SYSTEM, AND PROGRAM FOR COMMUNICATION CODE CHANGES, assigned to the assignee of the present application, filed on Jun. 19, 2003 and attorney docket number TUC9200300036US1.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention relates to a method, system, and program for managing resources of a remote processor.
  • 2. Description of the Related Art
  • Computing systems often include one or more host computers (“hosts”) for processing data and running application programs, direct access storage devices (DASDs) for storing data, and a storage controller for controlling the transfer of data between the hosts and the DASD. Storage controllers, also referred to as control units or storage directors, manage access to a storage space often comprised of numerous hard disk drives connected in a loop architecture, otherwise referred to as a Direct Access Storage Device (DASD). Hosts may communicate Input/Output (I/O) requests to the storage space through the storage controller.
  • To maintain availability in the event of a failure, many storage controllers known in the prior art provide redundant hardware clusters. Each hardware cluster comprises a processor complex, cache, non-volatile storage (NVS), such as a battery backed-up Random Access Memory (RAM), and separate power supply to provide connection paths to the attached storage. The NVS in one cluster backs up write data from the cache in the other cluster so that if one cluster fails, the write data in the cache of the failed cluster is stored in the NVS of the surviving cluster. After one cluster fails, all Input/Output (I/O) requests would be directed toward the surviving cluster. When both clusters are available, each cluster may be assigned to handle I/O requests for specific logical storage devices configured within the physical storage devices.
  • In performing these and other tasks, a cluster can not only execute operations locally using the capabilities of the local cluster itself, but can also make a request to have an operation executed on a remote cluster in the storage controller system. Since the capabilities of the remote cluster are typically limited, it is often desirable that the local cluster refrain from requesting too many remote operations which could result in the capabilities of the remote cluster being exceeded.
  • Various techniques have been proposed for limiting or “throttling” the requesting of remote operations on a remote cluster. One such technique allows only a single remote operation to proceed on the remote cluster. Once the remote cluster responds that the remote operation is complete, the local cluster is permitted to request another remote operation. As a consequence, the remote cluster handles a single remote operation at a time.
  • FIG. 1 shows an example of a multiple cluster system 10 comprising a first cluster 12 communicating with a second cluster 14 over a bus 16. In this example, an application program 18 operating under an operating system 20 of the first or local cluster 12 instructs a mail manager 22 to send a remote operation request to the second or remote cluster 14. The mail manager 22 folds the remote operation request into a mail message and stores the mail message containing the remote operation request in a memory area 24 of the remote cluster 14. The memory area 24 referred to in FIG. 1 as a “incoming mail queue” functions as a queue of mail messages, some of which include remote operations waiting to be executed.
  • Each remote operation is executed on the remote cluster 14. The remote cluster 14 has a mail manager 26 which examines the operation code of the remote operation in each mail message stored in the queue 24 in the order in which they are stored in the queue 24. Using the operation code, the mail manager 26 invokes the remote operation. Once the remote operation is initiated, the mail message entry is removed from the queue 24 and a mail message is sent back to the local cluster 12 indicating that an additional remote operation may be sent to the remote cluster 14.
  • The mail manager 22 of the local cluster 12 is kept apprised by the mail manager 26 of the remote cluster 14, of how many mail message entries remain in the queue 24 of the remote cluster 14. In one prior system, the mail manager has a counter 37 which keeps a count of the permissible number of mail messages which may be sent to the other cluster14 and stored as entries in the incoming mail queue 24 before mail messages are removed from the queue 24. Thus, each count of the counter 37 may be thought of as a “credit” permitting the sending of a mail message to the other cluster 14.
  • The maximum count or credits of the counter 37 is equal to the total capacity or total number of entries of the incoming mail queue 24. As mail messages are sent to the other cluster 14, the credits of the counter 37 are decremented by the mail manager 22. The mail messages may include remote operation requests. As these and other mail messages are processed and removed from the incoming mail queue 24, the mail manager 26 so informs the mail manager 22 and the credits of the counter 37 are incremented. Once the capacity of the queue 24 is reached as indicated by the counter 37 indicating that all available credits have been used up, the mail manager 22 of the local cluster withholds sending new mail messages to the remote cluster queue 24 until additional credits are applied to the counter 37, indicating that slots have become available in the queue 24. In the meantime, the mail manager 22 stores remote operation requests and other mail in an outgoing mail queue 28 until the remote operation requests can be sent as mail messages to the remote cluster 14.
  • The second cluster 14 similarly has one or more application programs 38 operating under an operating system 40, which instructs the mail manager 26 to send a remote operation request to the first cluster 14 in the form of a mail message. The mail manager 26 stores the mail message containing the remote operation request as an entry in an incoming mail queue 44 of the first cluster 12. Operation of the remote operation request is invoked by the mail manager 22 of the first cluster 12. Once the incoming mail queue 44 of the first cluster 12 becomes full as indicated by a credit counter 46, the mail manager 26 of the second cluster 14 stores the mail messages in an outgoing mail queue 48 until additional space becomes available in the queue 44.
  • As previously mentioned, one purpose of redundant clusters is to ensure that if one cluster fails, the storage controller or other device may continue to operate. In such redundant applications, it is often desired that at least one cluster operate at all times so that operation of the device is not interrupted. As a result, when upgrading the software or code of the device, the software is often upgraded on one cluster while the other cluster continues to run. Then, the upgraded cluster is restarted and the software on the other cluster is upgraded. As a consequence, there may be intervals when the software code running the two clusters may be not be at the same level on both clusters. When the software on a cluster is upgraded and the cluster is restarted or booted, the booted cluster may inform the other cluster of the software level of the booted cluster. In one prior art system, this software level information may take the form of a version number of the loaded software.
  • SUMMARY OF THE DESCRIBED IMPLEMENTATIONS
  • Provided are a method, system, and program for managing resources in a remote processor in which remote operation requests are sent from a local processor to the remote processor. In one aspect, a remote operation request of a first resource type sent to a remote processor from a local processor, may be added as an entry in a first queue of remote operation requests of the first resource type awaiting execution by a first resource in a remote processor. Similarly, a remote operation request of a second resource type sent to the remote processor from the local processor, may be added as an entry in a second queue of remote operations of the second resource type awaiting execution by a second resource in a remote processor.
  • When execution of a remote operation request of the first resource type from the first queue is initiated using the resource of the first resource type of the remote processor, the remote operation request entry may be removed from the first queue. In addition, the remote processor may send to the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution.
  • Similarly when initiating execution of a remote operation request of the second resource type from the second queue using the resource of the second resource type of the remote processor; the remote operation request entry may be removed from the second queue. In addition, the remote processor may send to the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
  • In another aspect, upon sending a remote operation request of a first resource type to the remote processor to be executed in connection with a first resource type of the remote processor; the local processor may decrement a first count of credits for each remote operation of the first resource type sent to the remote processor. In addition, upon receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor; the local processor may increment the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor. Each credit may represent a permissible outstanding remote operation request.
  • Similarly, upon sending a remote operation request of a second resource type to the remote processor to be executed in connection with a second resource type of the remote processor, the local processor may decrement a second count of credits for each remote operation of the second resource type sent to the remote processor. In addition, upon receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; the local processor may increment the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
  • In yet another aspect, if the first count of credits is below a predetermined threshold, the local processor may queue a remote operation request of the first resource type in a third queue of remote operation requests of the first resource type awaiting to be sent to the remote processor to be executed in connection with the first resource type of the remote processor. On the other hand, if the first count of credits is above a predetermined threshold, the local processor may send a remote operation request of the first resource type from the third queue to the remote processor to be executed in connection with the first resource type of the remote processor.
  • Similarly, if the second count of credits is below a predetermined threshold, the local processor may queue a remote operation request of the second resource type in a fourth queue of remote operation requests of the second resource type awaiting to be sent to the remote processor to be executed in connection with the second resource type of the remote processor. On the other hand, if the second count of credits is above a predetermined threshold, the local processor may send a remote operation request of the second resource type from the fourth queue to the remote processor to be executed in connection with the second resource type of the remote processor.
  • In still another aspect, the remote processor may increment a third count of credits for each initiation of execution of a remote operation of the first resource type and may decrement the third count of credits for each acknowledgment sent that an additional remote operation request of the first resource type may be sent to the remote processor for execution. Similarly, the remote processor may increment a fourth count of credits for each initiation of execution of a remote operation of the second resource type and may decrement the fourth count of credits for each acknowledgment sent that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
  • In yet another aspect, if the third count of credits is below a predetermined threshold, the remote processor may delay sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution until the third count of credits is above a predetermined threshold. Similarly, if the fourth count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution until the fourth count of credits is above a predetermined threshold.
  • In still another aspect, the local processor may attach an operation code identifying the resource type of a remote operation request prior to sending a remote operation request to the remote processor. In addition, the remote processor may decode the operation code of a remote operation request upon receipt of the remote operation request by the remote processor to identify the resource type.
  • In another aspect, the first queue has a first maximum number of entries and the first count of credits has a first maximum which matches the first maximum number of entries of the first queue. Similarly, the second queue has a second maximum number of entries and the second count of credits has a second maximum which matches the second maximum number of entries of the second queue.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
  • FIG. 1.1 illustrates a prior art mail manager for sending mail messages between processors.
  • FIG. 2 illustrates an example of a computing environment in which aspects of the invention are implemented;
  • FIGS. 3A-3B illustrate an architecture of a remote operation manager of first and second processors utilized with implementations of the invention;
  • FIGS. 4-5 illustrate logic to manage resources between processors in accordance with implementations of the invention;
  • FIGS. 6A-6B each illustrate information in a remote operation manager configuration structure in accordance with implementations of the invention;
  • FIG. 7 illustrates logic to configure a remote operation manager in accordance with implementations of the invention; and
  • FIG. 8 illustrates an architecture of computing components in a network environment, such as the hosts, storage controllers, clusters, and any other computing devices.
  • DETAILED DESCRIPTION OF ILLUSTRATED EMBODIMENTS
  • In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments of the present invention. It is understood that other embodiments may be utilized and structural and operational changes may be made without departing from the scope of the present invention.
  • FIG. 2 illustrates a computing architecture in which aspects of the invention are implemented. One or more hosts 102 a, 102 b . . . 102 n are in data communication with a storage system 104, such as a DASD or any other storage system known in the art, via a storage controller 106. The host 102 may be any computing device known in the art, such as a server, mainframe, workstation, personal computer, hand held computer, laptop, telephony device, network appliance, etc. The storage controller 106 and host system(s) 102 communicate via a network 108, which may comprise a Storage Area Network (SAN), Local Area Network (LAN), Intranet, the Internet, Wide Area Network (WAN), etc. The storage system 104 may be comprised of hard disk drives, tape cartridge libraries, optical disks, or any suitable non-volatile storage medium known in the art. The storage system 104 may be arranged as an array of storage devices, such as a Just a Bunch of Disks (JBOD), DASD, Redundant Array of Independent Disks (RAID) array, virtualization device, etc. The storage controller 106 may comprise any storage controller or server known in the art, such as the IBM Enterprise Storage Server (ESS) or any other storage controller known in the art. In certain implementations, the storage space in the storage controller 104 is configured as a plurality of logical devices (LD) 110 a, 110 b . . . 10 n.
  • The storage controller 106 includes two separate clusters 120 a, 120 b of hardware components to provide redundancy for improved availability. Although the illustrated embodiment is described in connection with a storage controller having clusters, it is appreciated that the invention may be applicable to a variety of systems utilizing multiple processors in which one processor can direct operations to be executed by another processor.
  • Each cluster 120 a, 120 b of the illustrated embodiment may be maintained on a separate power boundary, and includes a processor complex 122 a, 122 b, a cache 124 a, 124 b, and a non-volatile storage unit (NVS) 126 a, 126 b. The NVS 126 a, 126 b may comprise a battery backed-up RAM or any other type of non-volatile or volatile backup cache used to backup data in cache. The hosts 102 a, 102 b . . . 102 n would submit application I/O requests directed to a target logical device (LD) 110 a, 110 b . . . 110 n, including write data, to the cluster 120 a, 120 b to which the target logical device (LD) 110 a, 110 b . . . 110 n is assigned. The NVS 126 a, 126 b in one cluster 120 a, 120 b is used to backup write data in the cache 124 b, 124 a in the other cluster 120 b, 120 a, e.g., NVS 126 a backs up write data in cache 124 b.
  • In describing the logic of FIGS. 3-7, cluster 120 a will be described as the local or sending cluster and cluster 120 b as the remote or receiving cluster. Notwithstanding, the logic described in FIGS. 3-7 is capable of being executed by both processor complexes 122 a, 122 b in both clusters 120 a, 120 b in the storage controller 106 so that either cluster 102 a, 102 b may direct remote operations to be executed using the resources of the other.
  • FIGS. 3A and 3B shows an example of the processor complex 122 a communicating with the second processor complex 122 b over a bus 216. In this example, each processor complex 122 a, 122 b has an application program 218 a, 218 b operating under an operating system 220 a, 220 b, which instructs a mail manager 222 a, 222 b to send a remote operation request to the other processor complex 122 a, 122 b. Each mail manager 222 a, 222 b has an incoming mail queue 224 a, 224 b and operates in a manner similar to the mail managers 22, 42 of FIG. 1. Thus, the mail manager 222 a. stores the remote operation request of the processor complex 122 a as an entry in the incoming mail queue 224 b of the other processor complex 122 b. Once the capacity of the incoming mail queue 224 b is reached, the mail manager 222 a of the processor complex 122 a stores remote operation requests in an outgoing mail queue 228 a until the remote operation requests can be sent to the other processor complex 122 b. The other mail manager 222 b similarly stores the remote operation request of the processor complex 122 b as an entry in the incoming mail queue 224 a of the other processor complex 122 a. Once the capacity of the incoming mail queue 224 a is reached, the mail manager 222 b of the processor complex 122 b stores remote operation requests in an outgoing mail queue 228 b until the remote operation requests can be sent to the other processor complex 122 a. It is appreciated that other mail type arrangements may be used to send operations from one processor to another processor for execution by the other processor.
  • In the illustrated embodiment, each processor complex 122 a, 122 b has a plurality of resources, resource 1, resource 2 . . . resource N, each resource being used in connection with the execution of operations. For example, each resource may be a type of Task Control Blocks, each of which acts as a “ticket” which permits a task to proceed. However, it is appreciated that a resource may be any finite item which is dynamically allocated and which is used to initiate, continue or complete an operation. Also, in some embodiments, the processor complexes may have only one type of resource.
  • In addition, each processor complex 122 a, 122 b has a resource manager 226 a, 226 b which manages the appropriate resource 1, resource 2 . . . or resource N of the processor complex which permits an operation to be initiated by that resource. In the illustrated embodiment, the resource manager 226 a includes a control set 250 a 1, 250 a 2 . . . 250 aN for each type of resource, that is, resource 1, resource 2 . . . resource N, it is managing of the processor complex 122 a. In a similar manner, the resource manager 226 b includes a control set 250 b 1, 250 b 2 . . . 250 bN for each type of resource, that is, resource 1, resource 2 . . . resource N it is managing of the processor complex 122 b. Thus, for example, resource 1 of processor complex 122 a has associated with it control set 250 a 1 of resource manager 226 a. As explained in greater detail below, such an arrangement permits the resource managers 226 a, 226 b to manage multiple types of resources without reference to the details of the type of resources it is allocating.
  • FIG. 4 illustrates operations of the resource manager 226 a when an application 218 a of the processor complex 122 a requests execution of a remote operation by the other processor complex 122 b. To request a remote operation, an application 218 a invokes the resource manager 226 a which receives (block 260) the request for the remote operation. The resource manager 226 a identifies (block 262) which of the resources, resource 1-resource n, of the processor complex 122 b is needed to execute the requested remote operation.
  • The resource manager 226 a uses the appropriate control set 250 a 1 . . . 250 aN for the identified resource 1-resource N to determine whether the remote operation can be sent to the remote processor complex 122 b for execution or the sending of the remote operation should be delayed. Each control set 250 a 1-250 aN keeps a count of the permissible outstanding remote operations for that resource in an outgoing operation counter 264 a 1-264 aN. The maximum possible count for each control set 250 a 1-250 aN represents the maximum number of remote operations that can be sent to the other processor complex 122 b without exceeding the available capacity of the associated resource 1-resource N.
  • In the illustrated embodiment, each control set 250 b 1-250 bN of the other processor complex 122 b has an incoming operation queue 265 b 1-265 bN in which remote operations may be queued if the particular resource associated with the control set is not available to initiate the remote operation. Each incoming operation queue 265 b 1-265 bN of the other processor complex 122 b has a predetermined capacity for storing remote operations awaiting initiation. The maximum count of the outgoing operation credit counter 264 a 1-264 aN of each control set 250 a 1-250 aN of the processor complex 122 a corresponds to the capacity of the counterpart incoming operation queue 265 b 1-265 bN of the other processor complex 122 b. Thus, the count of permissible remote operations can be thought of as “credits” in which the resource manager 226 a is permitted to send a remote operation to be executed in connection with an associated resource of the other processor complex 122 b for each credit stored on the associated counter 264 a 1-264 aN of the identified control set 250 a 1-250 aN.
  • When the count permits, that is, when the number of credits remaining as indicated by the outgoing operation credit counter 264 a 1-264 aN is greater than zero (block 266), the remote operation is sent (blocks 270-274) to the other processor complex 122 b of the remote cluster 120 b. The count of the associated outgoing operation credit counter 264 a 1-264 aN is then decremented (block 276). Thus, the count of the appropriate credit counter 264 a 1-264 aN is decremented as remote operations are sent to the other processor complex 122 b. Once the count of the credit counter 264 a 1-264 aN reaches zero (block 266), the capacity of the counter part incoming operation queue 265 b 1-265 bN may be exceeded if another remote operation is sent to that queue. Accordingly, the resource manager 226 a queues (block 280) the remote operation as an entry in the associated outgoing operation queue 280 a 1-280 aN of the control set 250 a 1-250 aN. As explained in greater detail below, the remote operation will remain in the queue 280 a 1-280 aN until an outgoing operation credit becomes available for the associated control set 250 a 1-250 aN. The outgoing operation credits are incremented as remote operations are completed on the remote processor complex 122 b as described in connection with FIG. 5 below.
  • If, for example, a requested remote operation is to be executed in connection with resource 1 of the remote processor complex 122 b, the resource manager 226 a identifies (block 262) control set 250 a 1 for the resource 1 and checks the outgoing operation counter 264 a 1 of the control set 250 a 1. When the number of credits remaining as indicated by the outgoing operation credit counter 264 a 1 is greater than zero (block 266), the remote operation is sent (blocks 270-274) to the other processor complex 122 b of the remote cluster 120 b and the outgoing operation credit counter 264 a 1 is decremented (block 276). Otherwise, the resource manager 226 a queues (block 280) the remote operation as an entry in the associated outgoing operation queue 280 a 1 of the control set 250 a 1 until a credit for control set 250 a 1 becomes available.
  • Although the illustrated embodiment utilizes a threshold of zero credits for delaying the sending of additional remote operation requests to the other processor complex, it is appreciated that other thresholds may be selected, depending upon the particular application.
  • In the illustrated embodiment, the resource managers 226 a sends a remote operation request to the other processor complex 122 b by placing the requested remote operation in a mail message and embedding (block 270) a resource manager operation code into the mail message. In addition, as explained below, the resource manager notes the count indicated by an incoming operation credit counter 282 a 1-282 aN and embeds this count along with the resource manager operation code into the mail message. This mail message is passed (block 274) to the mail manager 222 a which stores it in the incoming mail queue 224 b of the mail manager 228 b of the processor complex 122 b. Upon passing the mail message containing the remote operation request to the mail manager 222 a, the resource manager 226 a decrements (block 276) the associated outgoing operation credit counter 264 a 1-264 aN of the identified control set 250 a 1-250 aN associated with the resource of resource 1-resource N which will execute the requested remote operation.
  • In a similar manner, FIG. 4 illustrates operations of the resource manager 122 b when an application 218 b of the processor complex 122 b requests execution of a remote operation by the other processor complex 122 a. Thus, each control set 250 b 1-250 bN of the resource manager 122 b includes an outgoing operation credit counter 264 b 1-264 bN to keep track of permissible outstanding remote operations for each associated resource1-resource N of the other processor complex 122 a. Each control set 250 b 1 -250 bN includes an outgoing operation queue 280 b 1-280 bN to store requested remote operation requests until a credit becomes available to send the remote operation request to the other processor complex 122 a. Each control set 250 b 1-250 bN still further includes an incoming operation credit counter 282 b 1-282 bN described below.
  • FIG. 5 illustrates operations of the resource manager 226 b when a request for a remote operation is received (block 300) from the other processor complex 122 a. As previously mentioned, the mail manager 222 a of the processor complex 122 a writes the mail message containing the requested remote operation as an entry in the incoming mail queue 224 b of the mail manager 222 b of the processor complex 122 b. The mail manager 222 b reads the resource manager operation code embedded in the mail message by the resource manager 226 a of the processor complex 122 a as described above, and informs the resource manager 226 b of the processor complex 122 b by passing a pointer to the mail message entry to the resource manager 226 b. In response, the resource manager 226 b extracts (block 302) the requested operation from the mail message and identifies the control set of the control sets 250 b 1-250 bN which is associated with the particular resource, resource 1-resource N, needed to execute the requested remote operation in the mail message.
  • If the requested operation is successfully initiated (block 306), that is the resource of resource 1-resource N was available for the requested operation, processor complex 122 b is ready for the processor complex 122 a to send another remote operation request for that particular resource 1-resource N. Hence, an incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN is incremented (block 308), to indicate that another remote operation may be sent by the processor complex 122 a.
  • If on the other hand, the requested operation was not initiated (block 306) because the resource could not be allocated to initiate the requested remote operation, the operation is placed (block 310) as an entry in the incoming operation queue 265 b 1-265 bN of the identified control set. The incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1 -250 bN is not incremented because a slot of the incoming operation queue 265 b 1-265 bN was used to store the queued remote operation. However, the resource manager 226 a may continue to send remote operation requests for that resource 1-resourceN so long as there are credits indicated by the associated outgoing operation credit counter 264 a 1-264 aN as described above until the credits are used up, indicating that the associated incoming operation queue 265 b 1-265 bN is filled to capacity.
  • Once the associated resource of the resources 1-N can be allocated, the first remote operation in the incoming operation queue 265 a 1-265 aN to be executed in connection with that resource 1-resource N is initiated (block 312) and removed (block 314) from the incoming operation queue 265 a 1-265 aN. The incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN may then be incremented (block 308) as described above to indicate that another remote operation request may be sent by the other processor complex 122 a.
  • The processor complex 122 a may be informed of the availability of additional credits in a variety of manners. In the illustrated embodiment, the resource manager 226 b compares (block 320) the accumulated credit count as indicated by the particular incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN to a particular threshold and if the accumulated credits exceed this threshold, the resource manager sends (block 322) the credit information to the processor complex 122 a in a mail message via the mail manager 222 b. Each credit sent to the processor complex 122 a is an acknowledgment that a remote operation request has been successfully initiated. In addition, the particular incoming operation credit counter 282 b 1-282 bN is reset (block 324) to await the accumulation of further credits as incoming operations are initiated. If the accumulated credits do not exceed (block 320) this threshold, the incoming operation credits are permitted to continue to accumulate as indicated by the incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN.
  • Once the resource manager 226 b is ready to send a remote operation request to the other processor 122 a using the same identified control set 250 b 1-250 bN, the resource manager 226 b attaches (block 270, FIG. 4) the credit information of the incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN to the mail message containing the remote operation before it is sent. In addition, the incoming operation credit counter 282 b 1-282 bN of the identified control set 250 b 1-250 bN is reset (block 330).
  • If, for example, a requested remote operation is to be executed in connection with resource 1 of the remote processor complex 122 b, the resource manager 122 b extracts (block 302) the requested operation from the mail message and identifies the control set 250 b 1 which is associated with the resource 1 needed to execute the remote operation of the mail message. If the requested operation is successfully initiated (block 306), that is the resource 1 was available for the requested operation, processor complex 122 b is ready for the processor complex 122 a to send another remote operation request for resource1. Hence, an incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is incremented (block 308), to acknowledge when sent, that another remote operation may be sent by the processor complex 122 a.
  • If on the other hand, the requested operation was not initiated (block 306) because the resource 1 could not be allocated to initiate the requested remote operation, the operation is placed (block 310) in the incoming operation queue 265 b 1 of the identified control set 250 b 1. The incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is not incremented because a slot of the incoming operation queue 265 b 1 was used to store the queued remote operation. However, the resource manager 226 a may continue to send remote operation requests for that resource1 so long as there are credits indicated by the associated outgoing operation credit counter 264 a 1 as described above until the credits are used up, indicating that the incoming operation queue 265 b 1 is filled to capacity.
  • Once the associated resource 1 can be allocated, the first remote operation in the incoming operation queue 265 a 1 to be executed in connection with resource 1 is initiated (block 312) and removed (block 314) from the incoming operation queue 265 a 1. The incoming operation credit counter 282 b 1 of the identified control set 250 b 1 may then be incremented (block 308) as described above to indicate that another remote operation request may be sent by the other processor complex 122 a for resource 1.
  • The resource manager 226 b compares (block 320) the accumulated credit count as indicated by the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 to a particular threshold and if the accumulated credits exceed this threshold, the resource manager sends (block 322) the credit information to the processor complex 122 a in a mail message via the mail manager 222 b. In addition, the incoming operation credit counter 282 b 1 is reset (block 324) to await the accumulation of further credits as incoming operations are initiated. If the accumulated credits do not exceed (block 320) this threshold, the incoming operation credits are permitted to continue to accumulate as indicated by the incoming operation credit counter 282 b 1 of the identified control set 250 b 1.
  • Once the resource manager 226 b is ready to send a remote operation request for resource 1 to the other processor 122 a using the same identified control set 250 b 1, the resource manager 226 b attaches (block 270, FIG. 4) the credit information of the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 to the mail message containing the remote operation before it is sent. In addition, the incoming operation credit counter 282 b 1 of the identified control set 250 b 1 is reset (block 330).
  • FIG. 5 likewise illustrates operations of the resource manager 226 a when a request for a remote operation is received from the other processor complex 122 b or when a requested remote operation queued in one of the incoming operation queues 265 a 1-265 aN is initiated.
  • FIG. 4 also illustrates operations of the resource manager 226 a when credit information is received (block 400) from the other processor complex 122 b. The resource manager 226 a identifies (block 402) the control set 250 a 1 . . . 250 aN to which the credits from the other processor complex 122 b apply. The resource manager 226 a applies (block 404) the received credits to the outgoing operation credit counter 264 a 1-264N of the identified control set 250 a 1 . . . 250 aN. Each applied credit increments the counter 264 a 1-264 aN and thus will permit the resource manager 226 a to send another remote operation to the other processor complex 122 b where each remote operation is executed in connection with the associated resource of resource 1-resource N of the identified control set 250 a 1 . . . 250 aN. If (block 406) there is a remote operation request in the associated outgoing operation queue 260 b 1 -260 bN, that remote operation request is sent (blocks 270-330) to the other processor complex 122 b for execution. Control returns to block 260 and any remaining queued remote operation requests are sent until the credits of the associated outgoing operation credit counter 264 a 1-264 aN are used up. At which time, the resource manager 226 a awaits the receipt of additional credits from the other processor complex 122 b to permit any remaining queued remote operation requests for the control set 250 b 1-250 bN to be sent. FIG. 4 likewise illustrates operations of the resource manager 226 b when credit information is received from the other processor complex 122 a.
  • As previously mentioned, when upgrading the software or code of a device or system having multiple clusters, the software is often upgraded on one cluster while the other cluster continues to run. Then, the upgraded cluster is restarted and the software on the other cluster is upgraded. As a consequence, there may be intervals when the software code running the two clusters may be not be at the same level on both clusters.
  • FIG. 6 a shows an array 600 a of configuration structures and FIG. 6 b shows an array 600 b of configuration structures which, as described in greater detail below, facilitate changes being made to the resource managers 226 b and 226 a, respectively, in a concurrent code load environment. The array 600 a includes a master configuration structure 602 a and a plurality of control set configuration structures 604 a 1, 604 a 2 604 aN for configuring the resource manager 226 b of the processor complex 122 b. Similarly, the array 600 b includes a master configuration structure 602 b and a plurality of control set configuration structures 604 b 1, 604 b 2 . . . 604 bN for configuring the resource manager 226 a of the processor complex 122 a.
  • More specifically, the array 600 b of configuration structures 602 b, 604 b 1-604 bN contains information about the control sets 250 b 1, 250 b 2 . . . 250 bN of the resource manager 226 b of the processor complex 122 b. In many applications it is desirable that the sending and receiving clusters agree on how many outstanding remote operation requests that the receiving cluster can accept for each resource1-resourceN. Thus, where the cluster 120 b is to be the receiving cluster, the resource manager 226 b of the processor complex 122 b populates the configuration structure 600 b with this information and passes the array 600 b to the cluster that will be sending the remote operation requests, that is, the cluster 120 a, via the mail manager 222 b (FIG. 3B). When received, the resource manager 226 a of the processor complex 122 a extracts the configuration information from the array 600 b and configures the control sets 250 a 1, 250 a 2 . . . 250 aN of the resource manager 226 a of the processor complex 122 a to send the remote operation requests for each resource1-resourceN.
  • In the illustrated embodiment, the array 600 b includes one resource control set configuration structure 604 b 1-604 bN for each resource control set 250 b 1-250 bN of the resource manager 226 b. Each resource configuration structure 604 b 1 -604 bN contains information about its associated resource control set 250 b 1-250 bN of the resource manager 226 b which is used to configure the associated resource control set 250 a 1-250 aN of the resource manager 226 a. More specifically, each resource configuration structure 604 b 1-604 bN includes a resource ID field 606 b 1-606 bN which identifies the resource control set 250 b 1-250 bN of the processor complex 122 b, to which that particular configuration structure pertains. In addition, each resource configuration structure 604 b 1-604 bN includes an incoming operation queue size field 608 b 1-6068N which specifies the size of the incoming operation queue 265 b 1-265 bN of the resource control set 250 b 1-250 bN identified by the field 606 b 1-606 bN. The master configuration structure 602 b contains a field 610 b which identifies how many resource control set configuration structures 604 b 1 -604 bN the array 600 b has and hence how many resource control sets 250 b 1-250 bN the resource manager 226 b has.
  • The master configuration structure 602 b also contains a field 612 b which identifies the version of the software code of the resource manager 226 b. In addition, the master configuration structure 602 b has a plurality of reserved fields 614 b which reserve space for configuration information for future versions of control sets. Each resource configuration structure 604 b 1 -604 bN similarly has plurality of reserved fields 616 b which provide similar capabilities.
  • FIG. 7 illustrates operations of the resource manager 226 a of the processor complex 122 a of the remote operation sending cluster 120 a in extracting the configuration information from the configuration structure array 600 b sent to the cluster 120 a by the resource manager 226 b of the remote operation receiving cluster 120 b. Upon receipt (block 700) of the configuration structure 600 b from the cluster 120 b, the resource manager 226 a of the cluster 120 a examines (block 702) field 612 b of the master configuration structure 602 b and compares the version of the software code of the resource manager 226 b of the cluster 120 b to the version of the software code of the resource manager 226 a of the cluster 120 a. If the version of the software code of the resource manager 226 b of the remote operation receiving cluster 120 b is earlier than the version of the software code of the remote operation sending cluster 120 a, the resource manager 226 a of the cluster 120 a blocks (block 704) the sending of remote operation requests to the other cluster 120 b which may not be supported by the receiving cluster 120 b.
  • After reading the master configuration structure 602 b, the resource manager 226 a reads (block 706) a resource control set configuration structure 604 b 1-604 bN of the array 600 b. From the read resource control set configuration structure 604 b 1-604 bN, the resource manager 226 b examines (block 708) field 606 b 1-606 bN to identify the resource of resource1-resourceN to which the configuration information contained in the particular resource control set configuration structure 604 b 1-604 bN which was read pertains. The resource manager 226 a also identifies the resource control set of control sets 250 a 1-250 aN for that identified resource or allocates a control set if one has not already been allocated. The incoming operation credit counter 282 a 1-282 aN of the identified resource control set 250 a 1-250 aN is set (block 710) so that the initial count of the counter 282 a 1-282 bN matches the incoming operation queue size of the counterpart resource control set 250 b 1-250 bN of the receiving cluster 120 b.
  • Thus, for example, if the field 606 b 1 of the first resource control set configuration structure read (block 706) identifies (block 708) the control set 250 b 1 with associated with resource 1, the queue size read (block 710) from the field 608 b 1 is the size of the incoming operation queue 265 b 1 of the resource 1 control set 250 b 1 of the resource manager 226 b of the receiving cluster 120 b. Thus, the size of the queue 265 b 1 is used to initialize the count of the incoming operation credit counter 282 a 1 of the resource 1 control set 250 a 1. As a consequence, the resource manager 226 a of the remote operation sending cluster 120 a will limit the number of outstanding remote operation requests sent to the receiving cluster 120 b to be executed in connection with resource 1 of the cluster 120 b, such that the capacity of the incoming operation queue 265 b 1 of the receiving cluster 120 b for remote operation requests of the resource 1 type will not be exceeded.
  • The resource manager 226 a determines (block 712) whether all of the resource control set configuration structures 604 b 1-604 bN of the array 600 b have been read. This may be determined, for example, by comparing the number of control set configuration structures 604 b 1-604 bN read to the number of control set configuration structures 604 b 1-604 bN sent to the resource manager 226 a as indicated by the field 610 b of the master configuration structure 602 b of the array 600 b. Each remaining control set configuration structure 604 b 1-604 bN is read and the counterpart resource control set 250 a 1-250 aN is configured using the information read from the read control set configuration structure 604 b 1-604 bN until all of the control set configuration structures 604 b 1-604 bN of the array 600 b have been read.
  • The resource identification fields 606 b 1-606 bN readily permit the resource control set configuration structures 604 b 1-604 bN to be sent by the receiving cluster 102 b to the remote operation sending cluster 102 a in any order. In addition, the aforementioned fields and array structure facilitate changes to the resource manager control sets. However, it is appreciated that one or more fields may be modified or eliminated and the configuration structures modified, depending upon the particular application.
  • In a similar manner, the array 600 a of configuration structures 602 a, 604 a 1-604 aN contains information about the control sets 250 a 1, 250 a 2 . . . 250 aN of the resource manager 226 a of the processor complex 122 a. Where the cluster 120 a is to be the remote operation receiving cluster, the resource manager 226 a of the processor complex 122 a populates the configuration structure 600 a with this information and passes the array 600 a to the cluster that will be sending the remote operation requests, that is, the cluster 120 b, via the mail manager 222 a (FIG. 3A). When received, the resource manager 226 b of the processor complex 122 b extracts the configuration information from the array 600 a and configures the control sets 250 b 1, 250 b 2 . . . 250 bN of the resource manager 226 b of the processor complex 122 b to send the remote operation requests for each resource1-resourceN.
  • In the illustrated embodiment, the array 600 a includes one resource control set configuration structure 604 a 1-604 aN for each resource control set 250 a 1-250 aN of the resource manager 226 a. Each resource configuration structure 604 a 1-604 aN contains information about its associated resource control set 250 a 1-250 aN of the resource manager 226 a which is used to configure the associated resource control set 250 b 1-250 bN of the resource manager 226 b. More specifically, each resource configuration structure 604 a 1-604 aN includes a resource ID field 606 a 1-606 aN which identifies one of the resource control sets 250 a 1-250 aN of the processor complex 122 a. In addition, each resource configuration structure 604 a 1-604 aN includes an incoming operation queue size field 608 a 1-6068N which specifies the size of the incoming operation queue 265 a 1-265 aN of the identified resource control sets 250 a 1-250 aN. The master configuration structure 602 a contains a field 610 a which identifies how many resource control set configuration structures 604 a 1-604 aN the array 600 a has and hence how many resource control sets 250 a 1-250 aN the resource manager 226 a has.
  • The master configuration structure 602 a also contains a field 612 a which identifies the version of the software code of the resource manager 226 a. In addition, the master configuration structure 602 a has a plurality of reserved fields 614 a which reserve space for configuration information for future versions of control sets. Each resource configuration structure 604 a 1-604 aN similarly has plurality of reserved fields 616 a which provide similar capabilities.
  • FIG. 7 also illustrates operations of the resource manager 226 b of the processor complex 122 b of the remote operation sending cluster 120 b in extracting the configuration information from the configuration structure array 600 a sent to the cluster 120 b by the resource manager 226 a of the remote operation receiving cluster 120 a.
  • Additional Implementation Details
  • The described techniques for managing resources may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” as used herein refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor complex. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Thus, the “article of manufacture” may comprise the medium in which the code is embodied. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise any information bearing medium known in the art.
  • In the described implementations, certain operations were described as performed by the processor complexes 122 a, and 122 b. In alternative implementations, certain operations described as performed by the processor complexes may be performed by a variety of computers, processors, and controllers.
  • In described implementations, certain operations were described as incrementing and decrementing counters. It is appreciated that the “counts” of counters may be positive or negative and that “incrementing” or “decrementing” a count can make an actual count more negative or more positive or less negative or less positive, depending upon the particular application. Thus for example, if the incoming operation queue 265 b 1 has a maximum of 25 entries, the outgoing operation counter 264 a 1 may be initialized to “25” for example to represent 25 credits. Each time a remote operation request of the associated resource type is sent to the remote processor complex, the credits may then be “decremented” by reducing the count of the counter until the counter 264 a 1 reaches “0” indicating that the credits have been used up. Similarly, the outgoing operation counter 264 a 1 may be initialized to “0” for example to represent the same 25 credits. Each time a remote operation request of the associated resource type is sent to the remote processor complex, the count of credits may then be “decremented” by increasing the count of the counter 264 a 1 until the counter 264 a 1 reaches “25” indicating that the credits have been used up.
  • The described implementations for resource management were described for use with systems deployed in a data environment where high availability is of value. However, those skilled in the art will appreciate that the resource management operations described herein may apply to computational and storage systems used for non-critical data.
  • In the described implementations, dual clusters were provided. In alternative implementations, there may be more than two clusters and resource management may be practiced in any of the other clusters.
  • The illustrated logic of FIGS. 4, 5 and 7 show certain events occurring in a certain order. In alternative implementations, certain operations may be performed in a different order, modified or removed. Morever, steps may be added to the above described logic and still conform to the described implementations. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
  • The variable N is used to denote any integer variable for certain of the described elements and may indicate a same or different integer value when used in different instances.
  • FIG. 8 illustrates one implementation of a computer architecture 800 of the network components, such as the hosts and storage controller clusters shown in FIG. 1. The architecture 800 may include a processor 802 (e.g., a microprocessor), a memory 804 (e.g., a volatile memory device), and storage 806 (e.g., a non-volatile storage, such as magnetic disk drives, optical disk drives, a tape drive, etc.). The storage 806 may comprise an internal storage device or an attached or network accessible storage. Programs in the storage 806 are loaded into the memory 804 and executed by the processor 802 in a manner known in the art. The architecture further includes a network card 808 to enable communication with a network. An input device 810 is used to provide user input to the processor 802, and may include a keyboard, mouse, pen-stylus, microphone, touch sensitive display screen, or any other activation or input mechanism known in the art. An output device 812 is capable of rendering information transmitted from the processor 802, or other component, such as a display monitor, printer, storage, etc.
  • The foregoing description of various implementations of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.

Claims (30)

1. A method comprising:
adding a remote operation request of a first resource type sent to a remote processor from a local processor, as an entry in a first queue of remote operation requests of the first resource type awaiting execution in connection with a first resource in a the remote processor; and
adding a remote operation request of a second resource type sent to the remote processor from the local processor, as an entry in a second queue of remote operations of the second resource type awaiting execution by a second resource in a the remote processor.
2. The method of claim 1 further comprising:
initiating execution of a remote operation request of the first resource type from the first queue using the resource of the first resource type of the remote processor;
initiating execution of a remote operation request of the second resource type from the second queue using the resource of the second resource type of the remote processor;
removing a remote operation request entry from the first queue; and
removing a remote operation request entry from the second queue;
sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution; and
sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
3. The method of claim 2 further comprising:
sending a remote operation request of a first resource type to the remote processor to be executed in connection with a first resource type of the remote processor;
decrementing a first count of credits for each remote operation of the first resource type sent to the remote processor wherein each credit of said first count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the first resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
incrementing the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
sending a remote operation request of a second resource type to the remote processor to be executed in connection with a second resource type of the remote processor;
decrementing a second count of credits for each remote operation of the second resource type sent to the remote processor wherein each credit of said second count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the second resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; and
incrementing the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
4. The method of claim 3 further comprising:
if the first count of credits is below a predetermined threshold, queuing a remote operation request of the first resource type in a third queue of remote operation requests of the first resource type awaiting to be sent to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is below a predetermined threshold, queuing a remote operation request of the second resource type in a fourth queue of remote operation requests of the second resource type awaiting to be sent to the remote processor to be executed in connection with the second resource type of the remote processor.
5. The method of claim 4 further comprising:
if the first count of credits is above a predetermined threshold, sending a remote operation request of the first resource type from the third queue to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is above a predetermined threshold, sending a remote operation request of the second resource type from the fourth queue to the remote processor to be executed in connection with the second resource type of the remote processor.
6. The method of claim 3 further comprising:
incrementing a third count of credits for each initiation of execution of a remote operation of the first resource type;
decrementing the third count of credits for each acknowledgment sent that an additional remote operation request of the first resource type may be sent to the remote processor for execution;
incrementing a fourth count of credits for each initiation of execution of a remote operation of the second resource type; and
decrementing said fourth count of credits for each acknowledgment sent that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
7. The method of claim 6 further comprising:
if the third count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution until the third count of credits is above a predetermined threshold; and
if the fourth count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution until the fourth count of credits is above a predetermined threshold.
8. The method of claim 3 further comprising:
attaching an operation code identifying the resource type of a remote operation request prior to sending a remote operation request to the remote processor; and
decoding the operation code of a remote operation request upon receipt of the remote operation request by the remote processor to identify the resource type.
9. The method of claim 3 wherein the first queue has a first maximum number of entries and said first count of credits has a first maximum which matches the first maximum number of entries of said first queue and the second queue has a second maximum number of entries and said second count of credits has a second maximum which matches the second maximum number of entries of said second queue.
10. A method comprising:
sending a remote operation request of a first resource type to a remote processor to be executed in connection with a first resource type of the remote processor;
decrementing a first count of credits for each remote operation of the first resource type sent to the remote processor wherein each credit of said first count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the first resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
incrementing the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
sending a remote operation request of a second resource type to the remote processor to be executed in connection with a second resource type of the remote processor;
decrementing a second count of credits for each remote operation of the second resource type sent to the remote processor wherein each credit of said second count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the second resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; and
incrementing the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
11. The method of claim 10 further comprising:
if the first count of credits is below a predetermined threshold, queuing a remote operation request of the first resource type in a first queue of remote operation requests of the first resource type awaiting being sent to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is below a predetermined threshold, queuing a remote operation request of the second resource type in a second queue of remote operation requests of the second resource type awaiting being sent to the remote processor to be executed in connection with the second resource type of the remote processor.
12. (canceled)
13. A An article of manufacture for managing remote operation requests sent from a local processor to a remote processor, wherein the article of manufacture causes operations to be performed, the operations comprising:
adding a remote operation request of a first resource type sent to a remote processor from a local processor, as an entry in a first queue of remote operation requests of the first resource type awaiting execution by a first resource in a the remote processor; and
adding a remote operation request of a second resource type sent to the remote processor from the local processor, as an entry in a second queue of remote operations of the second resource type awaiting execution by a second resource in the remote processor.
14. The article of manufacture of claim 13 further comprising the operations of:
initiating execution of a remote operation request of the first resource type from the first queue using the resource of the first resource type of the remote processor;
initiating execution of a remote operation request of the second resource type from the second queue using the resource of the second resource type of the remote processor;
removing a remote operation request entry from the first queue;
removing a remote operation request entry from the second queue;
sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution; and
sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
15. The article of manufacture of claim 14 further comprising the operations of:
sending a remote operation request of a first resource type to the remote processor to be executed in connection with a first resource type of the remote processor;
decrementing a first count of credits for each remote operation of the first resource type sent to the remote processor wherein each credit of said first count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the first resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
incrementing the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
sending a remote operation request of a second resource type to the remote processor to be executed in connection with a second resource type of the remote processor;
decrementing a second count of credits for each remote operation of the second resource type sent to the remote processor wherein each credit of said second count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the second resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; and
incrementing the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
16. The article of manufacture of claim 15 further comprising the operations of:
if the first count of credits is below a predetermined threshold, queuing a remote operation request of the first resource type in a third queue of remote operation requests of the first resource type awaiting to be sent to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is below a predetermined threshold, queuing a remote operation request of the second resource type in a fourth queue of remote operation requests of the second resource type awaiting to be sent to the remote processor to be executed in connection with the second resource type of the remote processor.
17. The article of manufacture of claim 16 further comprising the operations of:
if the first count of credits is above a predetermined threshold, sending a remote operation request of the first resource type from the third queue to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is above a predetermined threshold, sending a remote operation request of the second resource type from the fourth queue to the remote processor to be executed in connection with the second resource type of the remote processor.
18. The article of manufacture of claim 15 further comprising the operations of:
incrementing a third count of credits for each initiation of execution of a remote operation of the first resource type;
decrementing said third count of credits for each acknowledgment sent that an additional remote operation request of the first resource type may be sent to the remote processor for execution;
incrementing a fourth count of credits for each initiation of execution of a remote operation of the second resource type; and
decrementing said fourth count of credits for each acknowledgment sent that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
19. The article of manufacture of claim 18 further comprising the operations of:
if the third count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution until the third count of credits is above a predetermined threshold; and
if the fourth count of credits is below a predetermined threshold, delaying sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution until the fourth count of credits is above a predetermined threshold.
20. The article of manufacture of claim 15 further comprising the operations of:
attaching an operation code identifying the resource type of a remote operation request prior to sending a remote operation request to the remote processor; and
decoding the operation code of a remote operation request upon receipt of the remote operation request by the remote processor to identify the resource type.
21. The article of manufacture of claim 15 wherein the first queue has a first maximum number of entries and said first count of credits has a first maximum which matches the first maximum number of entries of said first queue and the second queue has a second maximum number of entries and said second count of credits has a second maximum which matches the second maximum number of entries of said second queue.
22. An article of manufacture for managing remote operation requests sent from a local processor to a remote processor, wherein the article of manufacture causes operations to be performed, the operations comprising:
sending a remote operation request of a first resource type to a remote processor to be executed in connection with a first resource type of the remote processor;
decrementing a first count of credits for each remote operation of the first resource type sent to the remote processor wherein each credit of said first count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the first resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
incrementing the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
sending a remote operation request of a second resource type to the remote processor to be executed in connection with a second resource type of the remote processor;
decrementing a second count of credits for each remote operation of the second resource type sent to the remote processor wherein each credit of said second count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the second resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; and
incrementing the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
23. The article of manufacture of claim 22 further comprising the operations of:
if the first count of credits is below a predetermined threshold, queuing a remote operation request of the first resource type in a first queue of remote operation requests of the first resource type awaiting being sent to the remote processor to be executed in connection with the first resource type of the remote processor; and
if the second count of credits is below a predetermined threshold, queuing a remote operation request of the second resource type in a second queue of remote operation requests of the second resource type awaiting being sent to the remote processor to be executed in connection with the second resource type of the remote processor.
24. (canceled)
25. A system, comprising:
a local processor having a first resource management means for sending remote operation requests of a first resource type and of a second resource type; and
a remote processor having a first resource means for executing remote operations of the first resource type and a second resource means for executing remote operation requests of the second resource type, and a second resource management means for receiving remote operation requests of the first resource type and the second resource type, said second resource management means having a first queue means including a plurality of entries for storing a remote operation request of the first resource type sent to the remote processor from the local processor to await execution by said first resource means in the remote processor, and having a second queue means including a plurality of entries for storing a remote operation request of the second resource type sent to the remote processor from the local processor to await execution by said second resource means in the remote processor.
26. The system of claim 25 wherein said second resource management means further comprises means for:
initiating execution of a remote operation request of the first resource type from the first queue means using the first resource means of the remote processor;
initiating execution of a remote operation request of the second resource type from the second queue means using the resource of the second resource type of the remote processor;
removing a remote operation request entry from the first queue means;
removing a remote operation request entry from the second queue means;
sending the local processor an acknowledgment that an additional remote operation request of the first resource type may be sent to the remote processor for execution; and
sending the local processor an acknowledgment that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
27. The system of claim 26 wherein the first resource management means further comprises means for:
decrementing a first count of credits for each remote operation of the first resource type sent to the remote processor wherein each credit of said first count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the first resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
incrementing the first count of credits for each acknowledgment from the remote processor that another remote operation of the first resource type may be sent to the remote processor;
decrementing a second count of credits for each remote operation of the second resource type sent to the remote processor wherein each credit of said second count indicates a permissible remote operation which is permitted to be sent to be executed in connection with an associated resource of the second resource type of the remote processor;
receiving an acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor; and
incrementing the second count of credits for each acknowledgment from the remote processor that another remote operation of the second resource type may be sent to the remote processor.
28. The system of claim 27 wherein the first resource management means further comprises:
a third queue means including a plurality of entries for storing remote operation requests of the first resource type awaiting to be sent to the remote processor to be executed in connection with the first resource type of the remote processor;
means for queuing a remote operation request of the first resource type in the third queue means if the first count of credits is below a predetermined threshold;
a fourth queue means including a plurality of entries for storing remote operation requests of the second resource type awaiting to be sent to the remote processor to be executed in connection with the second resource type of the remote processor and means for queuing a remote operation request of the second resource type in the fourth queue means if the second count of credits is below a predetermined threshold.
29. The system of claim 28 wherein the first resource management means sends a remote operation request of the first resource type from the third queue means to the remote processor to be executed in connection with the first resource means of the remote processor if the first count of credits is above a predetermined threshold; and
wherein the first resource management means sends a remote operation request of the second resource type from the fourth queue means to the remote processor to be executed in connection with the second resource means of the remote processor if the second count of credits is above a predetermined threshold.
30. The system of claim 29 wherein the second resource management means further comprises means for:
incrementing a third count of credits for each initiation of execution of a remote operation of the first resource type;
decrementing said third count of credits for each acknowledgment sent that an additional remote operation request of the first resource type may be sent to the remote processor for execution;
incrementing a fourth count of credits for each initiation of execution of a remote operation of the second resource type; and
decrementing said fourth count of credits for each acknowledgment sent that an additional remote operation request of the second resource type may be sent to the remote processor for execution.
US11/851,878 2003-06-19 2007-09-07 Method, system, and program for remote resource management Abandoned US20070299904A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/851,878 US20070299904A1 (en) 2003-06-19 2007-09-07 Method, system, and program for remote resource management

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/465,177 US7363629B2 (en) 2003-06-19 2003-06-19 Method, system, and program for remote resource management
US11/851,878 US20070299904A1 (en) 2003-06-19 2007-09-07 Method, system, and program for remote resource management

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/465,177 Continuation US7363629B2 (en) 2003-06-19 2003-06-19 Method, system, and program for remote resource management

Publications (1)

Publication Number Publication Date
US20070299904A1 true US20070299904A1 (en) 2007-12-27

Family

ID=33517459

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/465,177 Active - Reinstated 2025-04-02 US7363629B2 (en) 2003-06-19 2003-06-19 Method, system, and program for remote resource management
US11/851,878 Abandoned US20070299904A1 (en) 2003-06-19 2007-09-07 Method, system, and program for remote resource management

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/465,177 Active - Reinstated 2025-04-02 US7363629B2 (en) 2003-06-19 2003-06-19 Method, system, and program for remote resource management

Country Status (1)

Country Link
US (2) US7363629B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077285A1 (en) * 2004-05-10 2009-03-19 Hitachi, Ltd. Disk-array device having storage-device recognition and identification of a storage area network link environment
US8151021B1 (en) * 2010-03-31 2012-04-03 Emc Corporation Upgrading software on a cluster of computerized devices
US20120323874A1 (en) * 2011-06-15 2012-12-20 Ivan Schreter Resource-specific control blocks for database cache

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7639617B2 (en) 2001-06-27 2009-12-29 Cisco Technology, Inc. Upstream physical interface for modular cable modem termination system
US7688828B2 (en) * 2001-06-27 2010-03-30 Cisco Technology, Inc. Downstream remote physical interface for modular cable modem termination system
US7209442B1 (en) 2001-06-27 2007-04-24 Cisco Technology, Inc. Packet fiber node
US7529778B1 (en) 2001-12-12 2009-05-05 Microsoft Corporation System and method for providing access to consistent point-in-time file versions
US7583704B1 (en) 2003-06-10 2009-09-01 Carl Walker Synchronizing separated upstream and downstream channels of cable modem termination systems
US7363629B2 (en) * 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7370081B2 (en) * 2003-06-19 2008-05-06 International Business Machines Corporation Method, system, and program for communication of code changes for transmission of operation requests between processors
US8312045B2 (en) * 2003-12-30 2012-11-13 Sap Ag Configuration data content for a clustered system having multiple instances
US7526479B2 (en) * 2003-12-30 2009-04-28 Sap Ag Configuration manager in enterprise computing system
US8601099B1 (en) 2003-12-30 2013-12-03 Sap Ag System and method for managing multiple sever node clusters using a hierarchical configuration data structure
US8190780B2 (en) 2003-12-30 2012-05-29 Sap Ag Cluster architecture having a star topology with centralized services
US7533163B1 (en) 2003-12-30 2009-05-12 Sap Ag Startup framework and method for enterprise computing systems
US7519600B1 (en) 2003-12-30 2009-04-14 Sap Aktiengesellschaft System and method for managing multiple application server clusters using a hierarchical data object and a multi-parameter representation for each configuration property
US7817553B2 (en) 2004-05-25 2010-10-19 Cisco Technology, Inc. Local area network services in a cable modem network
US7539208B2 (en) * 2004-05-25 2009-05-26 Cisco Technology, Inc. Timing system for modular cable modem termination system
US7720101B2 (en) 2004-05-25 2010-05-18 Cisco Technology, Inc. Wideband cable modem with narrowband circuitry
US8102854B2 (en) * 2004-05-25 2012-01-24 Cisco Technology, Inc. Neighbor discovery proxy with distributed packet inspection scheme
US7864686B2 (en) 2004-05-25 2011-01-04 Cisco Technology, Inc. Tunneling scheme for transporting information over a cable network
US8149833B2 (en) 2004-05-25 2012-04-03 Cisco Technology, Inc. Wideband cable downstream protocol
US7646786B2 (en) 2004-05-25 2010-01-12 Cisco Technology, Inc. Neighbor discovery in cable networks
US7835274B2 (en) 2004-05-25 2010-11-16 Cisco Technology, Inc. Wideband provisioning
US7532627B2 (en) * 2004-05-25 2009-05-12 Cisco Technology, Inc. Wideband upstream protocol
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
US7630361B2 (en) 2005-05-20 2009-12-08 Cisco Technology, Inc. Method and apparatus for using data-over-cable applications and services in non-cable environments
EP1727055B1 (en) * 2005-05-25 2016-09-07 Microsoft Technology Licensing, LLC Data communication coordination with sequence numbers
US8332526B2 (en) 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
US7823154B2 (en) * 2005-09-16 2010-10-26 Hewlett-Packard Development Company, L.P. System and method for providing, by a plurality of schedulers, differentiated service to consumers of distributed resources
US7701951B2 (en) 2006-03-06 2010-04-20 Cisco Technology, Inc. Resource reservation and admission control for IP network
US9588809B2 (en) * 2006-10-10 2017-03-07 Invistasking LLC Resource-based scheduler
US7730478B2 (en) * 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US7802025B2 (en) 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
US7886084B2 (en) 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
US7827391B2 (en) 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US8032892B2 (en) * 2007-06-26 2011-10-04 International Business Machines Corporation Message passing with a limited number of DMA byte counters
US7877551B2 (en) * 2007-06-26 2011-01-25 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US8108738B2 (en) 2007-06-26 2012-01-31 International Business Machines Corporation Data eye monitor method and apparatus
US8458282B2 (en) 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US8103832B2 (en) 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US7984448B2 (en) * 2007-06-26 2011-07-19 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US8509255B2 (en) * 2007-06-26 2013-08-13 International Business Machines Corporation Hardware packet pacing using a DMA in a parallel computer
US8756350B2 (en) 2007-06-26 2014-06-17 International Business Machines Corporation Method and apparatus for efficiently tracking queue entries relative to a timestamp
US8010875B2 (en) 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
US10049190B1 (en) * 2007-12-21 2018-08-14 Symantec Corporation Method and apparatus for remotely managing a resource at a computer
US20090222833A1 (en) * 2008-02-28 2009-09-03 Microsoft Corporation Codeless provisioning sync rules
US9128771B1 (en) * 2009-12-08 2015-09-08 Broadcom Corporation System, method, and computer program product to distribute workload
US8875152B2 (en) * 2010-04-22 2014-10-28 Salesforce.Com, Inc. System, method and computer program product for dynamically increasing resources utilized for processing tasks
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US9130969B2 (en) * 2012-08-23 2015-09-08 Seagate Technology Llc Data storage I/O communication method and apparatus
US10437616B2 (en) * 2016-12-31 2019-10-08 Intel Corporation Method, apparatus, system for optimized work submission to an accelerator work queue
US11372554B1 (en) * 2017-07-27 2022-06-28 EMC IP Holding Company, LLC Cache management system and method
US11175959B2 (en) * 2019-05-01 2021-11-16 International Business Machines Corporation Determine a load balancing mechanism for allocation of shared resources in a storage system by training a machine learning module based on number of I/O operations
US11175958B2 (en) * 2019-05-01 2021-11-16 International Business Machines Corporation Determine a load balancing mechanism for allocation of shared resources in a storage system using a machine learning module based on number of I/O operations

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4616359A (en) * 1983-12-19 1986-10-07 At&T Bell Laboratories Adaptive preferential flow control for packet switching system
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5649103A (en) * 1995-07-13 1997-07-15 Cabletron Systems, Inc. Method and apparatus for managing multiple server requests and collating reponses
US5828881A (en) * 1995-11-09 1998-10-27 Chromatic Research, Inc. System and method for stack-based processing of multiple real-time audio tasks
US5926635A (en) * 1997-02-05 1999-07-20 Hewlett Packard Company Method for reducing complexities when communicating between tasks
US6105108A (en) * 1997-10-24 2000-08-15 Compaq Computer Corporation Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US6434230B1 (en) * 1999-02-02 2002-08-13 Avaya Technology Corp. Rules-based queuing of calls to call-handling resources
US20030005025A1 (en) * 2001-06-27 2003-01-02 Shavit Nir N. Load-balancing queues employing LIFO/FIFO work stealing
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US20040024894A1 (en) * 2002-08-02 2004-02-05 Osman Fazil Ismet High data rate stateful protocol processing
US20040054853A1 (en) * 2002-09-16 2004-03-18 Sprangle Eric A. Prefetching data in a computer system
US6760753B1 (en) * 1999-09-13 2004-07-06 Fujitsu Limited Electronic mail communication apparatus and recording medium
US20040260773A1 (en) * 2003-06-19 2004-12-23 Springer James Alan Method, system, and program for communication code changes
US20040260748A1 (en) * 2003-06-19 2004-12-23 Springer James Alan Method, system, and program for remote resource management
US7046676B2 (en) * 2001-11-01 2006-05-16 International Business Machines Corporation QoS scheduler and method for implementing quality of service with cached status array
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4616359A (en) * 1983-12-19 1986-10-07 At&T Bell Laboratories Adaptive preferential flow control for packet switching system
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5649103A (en) * 1995-07-13 1997-07-15 Cabletron Systems, Inc. Method and apparatus for managing multiple server requests and collating reponses
US5828881A (en) * 1995-11-09 1998-10-27 Chromatic Research, Inc. System and method for stack-based processing of multiple real-time audio tasks
US5926635A (en) * 1997-02-05 1999-07-20 Hewlett Packard Company Method for reducing complexities when communicating between tasks
US6105108A (en) * 1997-10-24 2000-08-15 Compaq Computer Corporation Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US6434230B1 (en) * 1999-02-02 2002-08-13 Avaya Technology Corp. Rules-based queuing of calls to call-handling resources
US6760753B1 (en) * 1999-09-13 2004-07-06 Fujitsu Limited Electronic mail communication apparatus and recording medium
US20030005025A1 (en) * 2001-06-27 2003-01-02 Shavit Nir N. Load-balancing queues employing LIFO/FIFO work stealing
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US7046676B2 (en) * 2001-11-01 2006-05-16 International Business Machines Corporation QoS scheduler and method for implementing quality of service with cached status array
US20040024894A1 (en) * 2002-08-02 2004-02-05 Osman Fazil Ismet High data rate stateful protocol processing
US20040054853A1 (en) * 2002-09-16 2004-03-18 Sprangle Eric A. Prefetching data in a computer system
US20040260773A1 (en) * 2003-06-19 2004-12-23 Springer James Alan Method, system, and program for communication code changes
US20040260748A1 (en) * 2003-06-19 2004-12-23 Springer James Alan Method, system, and program for remote resource management
US7363629B2 (en) * 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7370081B2 (en) * 2003-06-19 2008-05-06 International Business Machines Corporation Method, system, and program for communication of code changes for transmission of operation requests between processors

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077285A1 (en) * 2004-05-10 2009-03-19 Hitachi, Ltd. Disk-array device having storage-device recognition and identification of a storage area network link environment
US7640380B2 (en) * 2004-05-10 2009-12-29 Hitachi, Ltd. Disk-array device having storage-device recognition and identification of a storage area network link environment
US8151021B1 (en) * 2010-03-31 2012-04-03 Emc Corporation Upgrading software on a cluster of computerized devices
US20120323874A1 (en) * 2011-06-15 2012-12-20 Ivan Schreter Resource-specific control blocks for database cache
US9442948B2 (en) * 2011-06-15 2016-09-13 Sap Se Resource-specific control blocks for database cache

Also Published As

Publication number Publication date
US7363629B2 (en) 2008-04-22
US20040260748A1 (en) 2004-12-23

Similar Documents

Publication Publication Date Title
US7363629B2 (en) Method, system, and program for remote resource management
US6643672B1 (en) Method and apparatus for asynchronous file writes in a distributed file system
US7047355B2 (en) Updated data write method using journal log
US7454653B2 (en) Reliability of diskless network-bootable computers using non-volatile memory cache
US7051174B2 (en) Method, system, and program for restoring data in cache
US6115781A (en) Method and system for storage and retrieval of data on a tape medium
US7478179B2 (en) Input/output priority inheritance wherein first I/O request is executed based on higher priority
US9619285B2 (en) Managing operation requests using different resources
US7941545B2 (en) System and article of manufacture for establishing and requesting status on a computational resource
US7774571B2 (en) Resource allocation unit queue
US20040267706A1 (en) Method, system, and program for managing requests to tracks subject to a relationship
US7529859B2 (en) System and article of manufacture for fencing of resources allocated to non-cooperative client computers
US7085892B2 (en) Method, system, and program for removing data in cache subject to a relationship
US7370081B2 (en) Method, system, and program for communication of code changes for transmission of operation requests between processors
US6353845B1 (en) Computer system, program product and method for tracking asynchronous I/O with timeout support
US9934106B1 (en) Handling backups when target storage is unavailable
US20170123657A1 (en) Systems and methods for back up in scale-out storage area network
US7047321B1 (en) Unblocking an operating system thread for managing input/output requests to hardware devices
CN116755858A (en) Kafka data management method, device, computer equipment and storage medium

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

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