+

US20080243522A1 - Apparatus, system, and method for parallelizing access to shared assests - Google Patents

Apparatus, system, and method for parallelizing access to shared assests Download PDF

Info

Publication number
US20080243522A1
US20080243522A1 US11/691,354 US69135407A US2008243522A1 US 20080243522 A1 US20080243522 A1 US 20080243522A1 US 69135407 A US69135407 A US 69135407A US 2008243522 A1 US2008243522 A1 US 2008243522A1
Authority
US
United States
Prior art keywords
spoke
size
global
pointer
asset
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.)
Granted
Application number
US11/691,354
Other versions
US8521878B2 (en
Inventor
Justin Thomson Miller
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
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/691,354 priority Critical patent/US8521878B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MILLER, JUSTIN THOMSON
Publication of US20080243522A1 publication Critical patent/US20080243522A1/en
Application granted granted Critical
Publication of US8521878B2 publication Critical patent/US8521878B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Definitions

  • This invention relates to accessing assets and more particularly relates to parallelizing access to shared assets.
  • Data processing systems include a plurality of assets such as servers, blade servers, pages of memory, storage devices, and the like.
  • the assets of a data processing system may be shared among one or more processes executing on the data processing system. For example, a plurality of processes may share pages of memory.
  • the data processing system may allocate access to the shared assets so that all processes may acquire needed shared assets in a timely manner.
  • shared assets are referred to as assets.
  • the data processing system must reduce interference between processes in acquiring assets.
  • a queue may include a data set such as a delimited entry in a file, a data structure in an array of linked data structures, a database entry, and the like.
  • the data set may identify an asset.
  • a data set may include the address of a storage device asset.
  • Assets may be shared by unlinking or removing the data set for an asset from the queue and allocating the data set and the asset to a process. Similarly, assets may be returned to the queue by linking the data set for the asset to the queue. Queues may be organized as first-in/first-out queues, last-in/first-out queues, and the like.
  • a queue may employ a queue lock wherein only a process that is granted the asset lock may access the queue. Other processes must wait until they are granted the queue lock before accessing the queue.
  • Queue locks effectively prevent interference between processes seeking to acquire assets. Unfortunately, the processes may wait a significant time in order to receive a queue lock. As a result, valuable processing time may be lost while the processes are idle.
  • the present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available systems for sharing assets. Accordingly, the present invention has been developed to provide an apparatus, system, and method for parallelizing access to assets that overcome many or all of the above-discussed shortcomings in the art.
  • the apparatus to parallelize access to assets is provided with a plurality of modules configured to functionally execute the steps of determining if a size of a first spoke is greater than a low threshold, requesting an asset, and rotating a global spoke pointer.
  • These modules in the described embodiments include a size module, a request module and a rotate module.
  • the size module determines if a size of a first spoke of a plurality of spokes is greater than a low threshold.
  • the spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke.
  • Each spoke is configured as an asset queue.
  • the request module requests an asset from the first spoke if the size of the first spoke is greater than the low threshold.
  • the rotate module rotates the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
  • the rotate module is further configured to rotate the global spoke pointer to the second spoke if a spoke lock for the first spoke is not granted.
  • a rotation count module may determine if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty so that the request module is configured to request an asset from the current spoke.
  • the apparatus also includes an error module and an empty count module. If the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the error module is configured to communicate an error condition if the empty count module determines a number of empty spokes exceeds an empty threshold.
  • the rotate module is configured to rotate the global spoke pointer if the empty count module determines the number of empty spokes does not exceed the empty threshold.
  • the size module determines if the size of the first spoke is less than a high threshold.
  • the request module requests adding the asset to the first spoke if the size of the first spoke is less than the high threshold.
  • the rotate module rotates the global spoke pointer to the second spoke if the size of the first spoke is not less than the high threshold.
  • the rotate module rotates the global spoke pointer and the request module requests adding the asset to the current spoke if a number of global spoke pointer rotations exceeds the rotation threshold.
  • the apparatus parallelizes access to the assets, facilitating rapid asset grants.
  • a system of the present invention is also presented to parallelize access to shared assets.
  • the system may be embodied in a data processing system.
  • the system in one embodiment, includes a plurality of assets and a computer.
  • the computer stores a data set corresponding to each asset. Each data set is associated with one spoke of a plurality of spokes organized with a circular order and each spoke is configured as an asset queue.
  • the computer includes a size module, a request module and a rotate module.
  • the assets may be configured as pages of shared memory.
  • the assets are selected from processors, blade servers, storage devices and communication channels.
  • the size module determines if the size of a first spoke of a plurality of spokes is greater than a low threshold.
  • the spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke.
  • Each spoke is configured as an asset queue.
  • the request module requests an asset from the first spoke if a size of the first spoke is greater than the low threshold.
  • the rotate module rotates the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
  • the system parallelizes access to assets so that assets may be utilized more efficiently.
  • a method of the present invention is also presented for parallelizing access to shared assets.
  • the method in the disclosed embodiments substantially includes the steps to carry out the functions presented above with respect to the operation of the described apparatus and system.
  • the method includes determining if a size of a first spoke is greater than a low threshold, requesting an asset, and rotating a global spoke pointer.
  • a size module determines if a size of a first spoke of a plurality of spokes is greater than a low threshold.
  • the spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke.
  • Each spoke is configured as an asset queue.
  • a request module requests an asset from the first spoke if the size of the first spoke is greater than the low threshold.
  • a rotate module rotates the global spoke pointer to a second spoke of a plurality of spokes if the size of the first spoke is not greater than the low threshold wherein the second spoke becomes the current spoke.
  • the global spoke pointer is rotated to the second spoke if a spoke lock for the first spoke is not granted.
  • the request module requests an asset from the current spoke if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of a current spoke is not empty.
  • the method parallelizes access to the assets, enabling efficient asset allocation.
  • the embodiment of the present invention parallelizes access to assets.
  • the present invention may reduce delays for processes needing to access asset queues.
  • FIG. 1 is a schematic block diagram illustrating one embodiment of a data processing system in accordance with the present invention
  • FIG. 2 is a schematic block diagram illustrating one embodiment of an asset spoke of the present invention
  • FIG. 3 is a schematic block diagram illustrating one embodiment of a spoke structure of the present invention.
  • FIG. 4 is a schematic block diagram illustrating one embodiment of a spoke structure apparatus of the present invention.
  • FIG. 5 is a schematic flow chart diagram illustrating one embodiment of an asset grant method of the present invention.
  • FIG. 6 is a schematic flow chart diagram illustrating one alternate embodiment of an asset grant method of the present invention.
  • FIG. 7 is a schematic flow chart diagram illustrating one embodiment of an asset return method of the present invention.
  • modules may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components.
  • a module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
  • Modules may also be implemented in software for execution by various types of processors.
  • An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions, which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
  • a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices.
  • operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices.
  • FIG. 1 is a schematic block diagram illustrating one embodiment of a data processing system (DPS) 100 in accordance with the present invention.
  • the DPS 100 includes one or more client computers 110 , a network 115 , a router 120 , an internal network 125 , one or more servers 130 , a storage communications channel 150 , and one or more storage subsystems 140 .
  • the client computers 110 are referred to as clients 110 .
  • the servers 130 may also be configured as mainframe computers, blade centers comprising multiple blade servers, and the like. Although for simplicity four clients 110 , one network 115 , one router 120 , one internal network 125 , two servers 130 , one storage communications channel 150 , and three storage subsystems 140 are shown, any number of clients 110 , networks 115 , routers 120 , internal networks 125 , servers 130 , storage communications channels 150 and storage subsystems 140 may be employed.
  • the DPS 100 could include other data processing devices such as bridges, scanners, printers, and the like.
  • Each storage subsystem 140 includes one or more storage controllers 160 and one or more storage devices 170 .
  • the storage devices 170 may be hard disk drives, optical storage devices, magnetic tape drives, micromechanical storage devices, micromechanical storage devices, holographic storage devices, and semiconductor storage devices.
  • the DPS 100 provides data storage and data manipulation services for the clients 110 .
  • a client 110 may access data stored on a storage device 170 of a storage subsystem 140 by communicating a request through the network 115 , the router 120 , the internal network 125 , a server 130 , and the storage communications channel 150 to a storage controller 160 for the storage device 170 .
  • the storage controller 160 may retrieve the data from the storage device 170 and communicate the data to the client 110 .
  • the server 130 may execute a database application used by the client 110 to access the data.
  • the data processing system 100 enables the multiple clients 110 to access assets such as free pages of shared memory storage systems without interfering with each other.
  • the assets may be configured as pages of shared memory.
  • the assets are selected from processors, blade servers, storage devices and communication channels.
  • FIG. 2 is a schematic block diagram illustrating one embodiment of an asset spoke 200 of the present invention.
  • the asset spoke 200 includes one or more assets 205 , a size counter 220 , and a spoke lock 225 .
  • the size counter 220 counts the number of assets 205 in the asset spoke 200 .
  • the asset spoke 200 begins with a start pointer 210 and ends with end pointer 215 .
  • the assets 205 may be linked using pointers as is well known to those of skill in the art.
  • the spoke lock 225 is granted to a client 110 so that no other client 110 can access the asset spoke 200 , protecting the asset spoke 200 and the size counter 220 from corruption by another process.
  • the size counter 220 and the spoke lock 225 ensure that asset spoke 200 homogeneity is maintained.
  • Access to the assets 205 stored in the asset spoke 200 may follow a first-in-first-out or a last-in-first-out rule.
  • first-in-first-out denotes that the first asset 205 to be added to the asset spoke 200 will be the first asset 205 to be removed.
  • last-in-first-out denotes that the last asset 205 to be added to the structure will be the first asset 205 to be removed.
  • the asset spoke 200 may be implemented as a singly or doubly linked list, but any data structure that can contain a collection of assets and enable the client 110 to add or remove objects from the collection would suffice.
  • FIG. 3 is a schematic block diagram illustrating one embodiment of a spoke structure 300 of the present invention.
  • the spoke structure 300 is organized as one or more data structures stored on a server 130 of FIG. 1 .
  • the spoke structure 300 includes one or more asset spokes 200 , one or more addresses 315 for the spokes 200 , a low threshold 305 , and a high threshold 310 .
  • the description of the spoke structure 300 refers to elements of FIGS. 1-2 , like numbers referring to like elements.
  • the addresses 315 may provide away to access the spokes 200 .
  • Each address 315 may be an address pointed to by a start pointer 210 .
  • the spoke structure 300 also includes a global spoke pointer 325 that points to a current spoke and that rotates through the spokes 200 as objects are allocated and deallocated from each spoke 200 .
  • the global spoke pointer 325 may be an index to an array containing the spokes 200 , a pointer to the start pointer 210 of a spoke 200 , or the like.
  • the low and high thresholds 305 , 310 specify a desired range for the number of assets 205 of each spoke 200 .
  • the number of assets 205 is referred to herein as the size of the spokes 200 .
  • the low and high thresholds 305 , 310 may be fixed throughout the life of a spoke 200 or may change dynamically.
  • FIG. 4 is a schematic block diagram illustrating one embodiment of a spoke structure apparatus 400 of the present invention.
  • the spoke structure apparatus 400 is organized as one or more computer program products executing on a server 130 of FIG. 1 .
  • the spoke structure apparatus 400 includes a size module 405 , a request module 410 , and a rotate module 415 .
  • the description of the spoke structure apparatus 400 refers to elements of FIGS. 1 , 2 and 3 , like numbers referring to like elements.
  • the size module 405 determines if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the low threshold 305 .
  • the request module 410 requests an asset 205 from the first spoke 200 a if the size of the first spoke 200 a is greater than the low threshold 305 .
  • the rotate module 415 rotates the global spoke pointer 325 to a second spoke 200 b of the plurality of spokes 200 if the size of the first spoke 200 a is not greater than the low threshold 305 , wherein the second spoke 200 b becomes the current spoke.
  • the rotate module 415 is further configured to rotate the global spoke pointer 325 to the second spoke 200 b if a spoke lock for the first spoke 200 a is not granted.
  • a rotation count module 420 may determine if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty so that the request module 410 is configured to request an asset 205 from the current spoke.
  • the apparatus 400 also includes an error module 430 and an empty count module 425 . If the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the error module 430 is configured to communicate an error condition if the empty count module 425 determines a number of empty spokes 200 exceeds an empty threshold.
  • the rotate module 415 is configured to rotate the global spoke pointer 325 if the empty count module 425 determines the number of empty spokes 200 does not exceed the empty threshold.
  • the size module 405 determines if the size of the first spoke 200 a is less than a high threshold 310 .
  • the request module 410 requests adding the asset 205 to the first spoke 200 a if the size of the first spoke 200 a is less than the high threshold 310 .
  • the rotate module 415 rotates the global spoke pointer 325 to the second spoke 200 b if the size of the first spoke 200 a is not less than the high threshold 310 .
  • the rotate module 415 rotates the global spoke pointer 325 and the request module 410 requests adding the asset to the current spoke if a number of global spoke pointer rotations exceeds the rotation threshold.
  • arrow types and line types may be employed in the flow chart diagrams, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.
  • FIG. 5 is a schematic flow chart diagram illustrating one embodiment of an asset grant method 500 of the present invention.
  • the method 500 substantially includes the steps to carry out the functions described above with respect to the operation of the described apparatus in FIGS. 1-4 .
  • the description of the method 500 refers to elements of FIGS. 1-4 , like numbers referring to like elements.
  • the method 500 begins and the rotate module 415 rotates 505 the global spoke pointer 325 to the next spoke 200 of the plurality of spokes 200 .
  • the next spoke 200 may be the first spoke 200 a.
  • the size module 405 determines 510 if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the low threshold 305 , wherein the first spoke 200 a is the current spoke. In the embodiment shown in FIG. 3 , the size of the second spoke 200 b is greater than the low threshold 305 . In an alternate example, the size module 405 may determine 510 that the size of an eighth spoke 200 h of FIG. 3 is not greater than the low threshold 305 . If the size of the spoke 200 is greater than the low threshold 305 , the request module 410 requests 515 the spoke lock 225 . The request module 410 further determines 520 if the spoke lock 225 is granted.
  • the rotation count module 420 may determine 540 if a number of global spoke pointer 325 rotations exceeds a rotation threshold. For example as shown in the embodiment in FIG. 3 , the size of a third spoke 200 c is less than the low threshold 305 so that the rotation count module 420 may determine 540 if a number of global spoke pointer rotations exceed a rotation threshold.
  • the rotation threshold may be a specified number of rotations such as six (6).
  • the size module 405 determines 545 if the current spoke is empty. If the current spoke is not empty, the request module 410 requests 515 the spoke lock 225 . If the size module 405 determines 545 that the current spoke is empty, the empty count module 425 determines 550 if a number of empty spokes 200 exceed the empty threshold.
  • the empty threshold may be a specified number of empty spokes 200 such as two (2).
  • the error module 430 returns 560 an error condition. For example, if three consecutive spokes 200 are empty so that the empty threshold is exceeded, the error module 560 communicates an “asset unavailable” error condition. If the number of spokes 200 does not exceed the empty threshold, the rotate module 415 rotates 555 the global spoke pointer 325 to check the next spoke 200 and the empty count module 425 determines 545 if the new current spoke is empty. The method 500 allocates assets, allowing a client 110 to move to another spoke 200 if a current spoke does not have sufficient assets.
  • FIG. 6 is a schematic flow chart diagram illustrating one alternate embodiment of an asset grant method 600 of the present invention.
  • the asset grant method 600 is the same as the asset grant method 500 of FIG. 5 except that the step 510 is replaced by step 610 , which determines 610 if the spoke size is greater than the low threshold 305 and the spoke lock 225 is free.
  • the rotation count module 420 may determine 540 if a number of global spoke pointer 325 rotations exceeds a rotation threshold 540 .
  • step 520 of FIG. 5 the request module 410 determines 520 if the spoke lock 225 is granted and if the spoke lock 225 is not granted the request module 410 waits for the spoke lock 225 .
  • step 620 of FIG. 6 the request module 410 determines 620 if the spoke lock 225 is granted and if the spoke lock 225 is not granted, the request module 410 requests 515 the spoke lock 225 .
  • the method 600 allocates assets, allowing a client 110 to move to another spoke 200 if a spoke lock 225 is not available for a current spoke.
  • FIG. 7 is a schematic flow chart diagram illustrating one embodiment of an asset return method 700 of the present invention.
  • the method 700 substantially includes the steps to carry out the functions described above with respect to the operation of the described apparatus in FIGS. 1-4 .
  • the description of the method 700 refers to elements of FIGS. 1-6 , like numbers referring to like elements.
  • the method 700 begins and the rotate module 415 rotates 705 the global spoke pointer 325 to the next spoke 200 of the plurality of spokes 200 .
  • the next spoke 200 may be the first spoke 200 a.
  • the size module 405 determines 710 if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the high threshold 310 . In the embodiment shown in FIG. 3 , the size of the first spoke 200 a is greater than the high threshold 310 . Alternatively, the size of the second spoke 200 b is not greater than the high threshold 310 . If the size of the spoke 200 is not greater than the high threshold 310 , the request module 410 requests 715 the spoke lock 225 . The request module 410 further determines 720 if the spoke lock 225 is granted.
  • the rotation count module 420 may determine 740 if a number of global spoke pointer rotations exceeds a rotation threshold. For example, in the embodiment in FIG. 3 , the second spoke 200 b is greater than the high threshold 310 so that the rotation count module 420 may determine 740 if the number of global spoke pointer rotations exceed a rotation threshold.
  • the rotate module 415 rotates 705 the spoke pointer 325 to check the next spoke 200 . If the number of global spoke pointer rotations exceeds the rotation threshold 740 , the rotate module 415 rotates 745 the global spoke pointer 325 and the request module 410 requests 715 spoke lock 225 .
  • the method 700 returns assets 205 to spokes 200 , selecting an alternate spoke 200 if a first spoke 220 a has more than a specified number of assets 205 .
  • the embodiment of the present invention parallelizes access to assets 205 .
  • the present invention may reduce delays for clients needing to access asset queues.
  • the present invention may be embodied in other specific forms without departing from its spirit or essential characteristics.
  • the described embodiments are to be considered in all respects only as illustrative and not restrictive.
  • the scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

An apparatus, system, and method are disclosed for parallelizing access to shared assets. A size module determines if a size of a first spoke of a plurality of spokes is greater than a low threshold. The spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke. Each spoke is configured as an asset queue. A request module requests an asset from the first spoke if the size of the first spoke is greater than the low threshold. A rotate module rotates the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • This invention relates to accessing assets and more particularly relates to parallelizing access to shared assets.
  • 2. Description of the Related Art
  • Data processing systems include a plurality of assets such as servers, blade servers, pages of memory, storage devices, and the like. The assets of a data processing system may be shared among one or more processes executing on the data processing system. For example, a plurality of processes may share pages of memory.
  • The data processing system may allocate access to the shared assets so that all processes may acquire needed shared assets in a timely manner. As used herein, shared assets are referred to as assets. In addition, the data processing system must reduce interference between processes in acquiring assets.
  • Data processing systems have employed queues to allocate assets. A queue may include a data set such as a delimited entry in a file, a data structure in an array of linked data structures, a database entry, and the like. The data set may identify an asset. For example, a data set may include the address of a storage device asset.
  • Assets may be shared by unlinking or removing the data set for an asset from the queue and allocating the data set and the asset to a process. Similarly, assets may be returned to the queue by linking the data set for the asset to the queue. Queues may be organized as first-in/first-out queues, last-in/first-out queues, and the like.
  • Unfortunately, there may be a conflict between processes if more than one process attempts to concurrently acquire an asset from a queue. As a result, a queue may employ a queue lock wherein only a process that is granted the asset lock may access the queue. Other processes must wait until they are granted the queue lock before accessing the queue.
  • Queue locks effectively prevent interference between processes seeking to acquire assets. Unfortunately, the processes may wait a significant time in order to receive a queue lock. As a result, valuable processing time may be lost while the processes are idle.
  • SUMMARY OF THE INVENTION
  • From the foregoing discussion, there is a need for an apparatus, system, and method for parallelizing access to assets. Beneficially, such an apparatus, system, and method would reduce the time needed to acquire assets.
  • The present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available systems for sharing assets. Accordingly, the present invention has been developed to provide an apparatus, system, and method for parallelizing access to assets that overcome many or all of the above-discussed shortcomings in the art.
  • The apparatus to parallelize access to assets is provided with a plurality of modules configured to functionally execute the steps of determining if a size of a first spoke is greater than a low threshold, requesting an asset, and rotating a global spoke pointer. These modules in the described embodiments include a size module, a request module and a rotate module.
  • The size module determines if a size of a first spoke of a plurality of spokes is greater than a low threshold. The spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke. Each spoke is configured as an asset queue.
  • The request module requests an asset from the first spoke if the size of the first spoke is greater than the low threshold. The rotate module rotates the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
  • In one embodiment, the rotate module is further configured to rotate the global spoke pointer to the second spoke if a spoke lock for the first spoke is not granted. Alternately, a rotation count module may determine if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty so that the request module is configured to request an asset from the current spoke.
  • In another embodiment, the apparatus also includes an error module and an empty count module. If the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the error module is configured to communicate an error condition if the empty count module determines a number of empty spokes exceeds an empty threshold. The rotate module is configured to rotate the global spoke pointer if the empty count module determines the number of empty spokes does not exceed the empty threshold.
  • In an alternate embodiment, the size module determines if the size of the first spoke is less than a high threshold. The request module requests adding the asset to the first spoke if the size of the first spoke is less than the high threshold. The rotate module rotates the global spoke pointer to the second spoke if the size of the first spoke is not less than the high threshold. Alternatively the rotate module rotates the global spoke pointer and the request module requests adding the asset to the current spoke if a number of global spoke pointer rotations exceeds the rotation threshold. The apparatus parallelizes access to the assets, facilitating rapid asset grants.
  • A system of the present invention is also presented to parallelize access to shared assets. The system may be embodied in a data processing system. In particular, the system, in one embodiment, includes a plurality of assets and a computer. The computer stores a data set corresponding to each asset. Each data set is associated with one spoke of a plurality of spokes organized with a circular order and each spoke is configured as an asset queue. The computer includes a size module, a request module and a rotate module.
  • The assets may be configured as pages of shared memory. In an alternate embodiment, the assets are selected from processors, blade servers, storage devices and communication channels.
  • The size module determines if the size of a first spoke of a plurality of spokes is greater than a low threshold. The spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke. Each spoke is configured as an asset queue.
  • The request module requests an asset from the first spoke if a size of the first spoke is greater than the low threshold. The rotate module rotates the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke. The system parallelizes access to assets so that assets may be utilized more efficiently.
  • A method of the present invention is also presented for parallelizing access to shared assets. The method in the disclosed embodiments substantially includes the steps to carry out the functions presented above with respect to the operation of the described apparatus and system. In one embodiment, the method includes determining if a size of a first spoke is greater than a low threshold, requesting an asset, and rotating a global spoke pointer.
  • A size module determines if a size of a first spoke of a plurality of spokes is greater than a low threshold. The spokes are arranged in a circular order wherein a global spoke pointer identifies the first spoke as a current spoke. Each spoke is configured as an asset queue.
  • A request module requests an asset from the first spoke if the size of the first spoke is greater than the low threshold. A rotate module rotates the global spoke pointer to a second spoke of a plurality of spokes if the size of the first spoke is not greater than the low threshold wherein the second spoke becomes the current spoke.
  • In an alternate embodiment the global spoke pointer is rotated to the second spoke if a spoke lock for the first spoke is not granted. The request module requests an asset from the current spoke if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of a current spoke is not empty. The method parallelizes access to the assets, enabling efficient asset allocation.
  • References throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment of the invention. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, discussion of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.
  • Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.
  • The embodiment of the present invention parallelizes access to assets. In addition, the present invention may reduce delays for processes needing to access asset queues. These features and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
  • FIG. 1 is a schematic block diagram illustrating one embodiment of a data processing system in accordance with the present invention;
  • FIG. 2 is a schematic block diagram illustrating one embodiment of an asset spoke of the present invention;
  • FIG. 3 is a schematic block diagram illustrating one embodiment of a spoke structure of the present invention;
  • FIG. 4 is a schematic block diagram illustrating one embodiment of a spoke structure apparatus of the present invention;
  • FIG. 5 is a schematic flow chart diagram illustrating one embodiment of an asset grant method of the present invention;
  • FIG. 6 is a schematic flow chart diagram illustrating one alternate embodiment of an asset grant method of the present invention; and
  • FIG. 7 is a schematic flow chart diagram illustrating one embodiment of an asset return method of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
  • Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions, which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
  • Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices.
  • Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
  • Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
  • FIG. 1 is a schematic block diagram illustrating one embodiment of a data processing system (DPS) 100 in accordance with the present invention. The DPS 100 includes one or more client computers 110, a network 115, a router 120, an internal network 125, one or more servers 130, a storage communications channel 150, and one or more storage subsystems 140.
  • As used herein, the client computers 110 are referred to as clients 110. The servers 130 may also be configured as mainframe computers, blade centers comprising multiple blade servers, and the like. Although for simplicity four clients 110, one network 115, one router 120, one internal network 125, two servers 130, one storage communications channel 150, and three storage subsystems 140 are shown, any number of clients 110, networks 115, routers 120, internal networks 125, servers 130, storage communications channels 150 and storage subsystems 140 may be employed. One of skill in the art will also readily recognize that the DPS 100 could include other data processing devices such as bridges, scanners, printers, and the like.
  • Each storage subsystem 140 includes one or more storage controllers 160 and one or more storage devices 170. The storage devices 170 may be hard disk drives, optical storage devices, magnetic tape drives, micromechanical storage devices, micromechanical storage devices, holographic storage devices, and semiconductor storage devices.
  • In one embodiment, the DPS 100 provides data storage and data manipulation services for the clients 110. For example, a client 110 may access data stored on a storage device 170 of a storage subsystem 140 by communicating a request through the network 115, the router 120, the internal network 125, a server 130, and the storage communications channel 150 to a storage controller 160 for the storage device 170. The storage controller 160 may retrieve the data from the storage device 170 and communicate the data to the client 110. In one embodiment, the server 130 may execute a database application used by the client 110 to access the data.
  • The data processing system 100 enables the multiple clients 110 to access assets such as free pages of shared memory storage systems without interfering with each other. The assets may be configured as pages of shared memory. In an alternate embodiment, the assets are selected from processors, blade servers, storage devices and communication channels.
  • FIG. 2 is a schematic block diagram illustrating one embodiment of an asset spoke 200 of the present invention. The asset spoke 200 includes one or more assets 205, a size counter 220, and a spoke lock 225. The size counter 220 counts the number of assets 205 in the asset spoke 200. In one embodiment, the asset spoke 200 begins with a start pointer 210 and ends with end pointer 215. The assets 205 may be linked using pointers as is well known to those of skill in the art. The spoke lock 225 is granted to a client 110 so that no other client 110 can access the asset spoke 200, protecting the asset spoke 200 and the size counter 220 from corruption by another process.
  • The size counter 220 and the spoke lock 225 ensure that asset spoke 200 homogeneity is maintained. Access to the assets 205 stored in the asset spoke 200 may follow a first-in-first-out or a last-in-first-out rule. As is known to one skilled in the art, first-in-first-out denotes that the first asset 205 to be added to the asset spoke 200 will be the first asset 205 to be removed. Similarly last-in-first-out denotes that the last asset 205 to be added to the structure will be the first asset 205 to be removed. The asset spoke 200 may be implemented as a singly or doubly linked list, but any data structure that can contain a collection of assets and enable the client 110 to add or remove objects from the collection would suffice.
  • FIG. 3 is a schematic block diagram illustrating one embodiment of a spoke structure 300 of the present invention. In a certain embodiment, the spoke structure 300 is organized as one or more data structures stored on a server 130 of FIG. 1. The spoke structure 300 includes one or more asset spokes 200, one or more addresses 315 for the spokes 200, a low threshold 305, and a high threshold 310. The description of the spoke structure 300 refers to elements of FIGS. 1-2, like numbers referring to like elements.
  • The addresses 315 may provide away to access the spokes 200. Each address 315 may be an address pointed to by a start pointer 210. The spoke structure 300 also includes a global spoke pointer 325 that points to a current spoke and that rotates through the spokes 200 as objects are allocated and deallocated from each spoke 200. The global spoke pointer 325 may be an index to an array containing the spokes 200, a pointer to the start pointer 210 of a spoke 200, or the like.
  • The low and high thresholds 305, 310 specify a desired range for the number of assets 205 of each spoke 200. The number of assets 205 is referred to herein as the size of the spokes 200. The low and high thresholds 305, 310 may be fixed throughout the life of a spoke 200 or may change dynamically.
  • FIG. 4 is a schematic block diagram illustrating one embodiment of a spoke structure apparatus 400 of the present invention. In a certain embodiment the spoke structure apparatus 400 is organized as one or more computer program products executing on a server 130 of FIG. 1. The spoke structure apparatus 400 includes a size module 405, a request module 410, and a rotate module 415. The description of the spoke structure apparatus 400 refers to elements of FIGS. 1, 2 and 3, like numbers referring to like elements. The size module 405 determines if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the low threshold 305.
  • The request module 410 requests an asset 205 from the first spoke 200 a if the size of the first spoke 200 a is greater than the low threshold 305. The rotate module 415 rotates the global spoke pointer 325 to a second spoke 200 b of the plurality of spokes 200 if the size of the first spoke 200 a is not greater than the low threshold 305, wherein the second spoke 200 b becomes the current spoke.
  • In one embodiment, the rotate module 415 is further configured to rotate the global spoke pointer 325 to the second spoke 200 b if a spoke lock for the first spoke 200 a is not granted. Alternately, a rotation count module 420 may determine if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty so that the request module 410 is configured to request an asset 205 from the current spoke.
  • In another embodiment, the apparatus 400 also includes an error module 430 and an empty count module 425. If the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the error module 430 is configured to communicate an error condition if the empty count module 425 determines a number of empty spokes 200 exceeds an empty threshold. The rotate module 415 is configured to rotate the global spoke pointer 325 if the empty count module 425 determines the number of empty spokes 200 does not exceed the empty threshold.
  • In an alternate embodiment, the size module 405 determines if the size of the first spoke 200 a is less than a high threshold 310. The request module 410 requests adding the asset 205 to the first spoke 200 a if the size of the first spoke 200 a is less than the high threshold 310. The rotate module 415 rotates the global spoke pointer 325 to the second spoke 200 b if the size of the first spoke 200 a is not less than the high threshold 310. Alternatively the rotate module 415 rotates the global spoke pointer 325 and the request module 410 requests adding the asset to the current spoke if a number of global spoke pointer rotations exceeds the rotation threshold.
  • The schematic flow chart diagrams that follow are generally set forth as logical flow chart diagrams. As such, the depicted order and labeled steps are indicative of one embodiment of the presented method. Other steps and methods may be conceived that are equivalent in function, logic, or effect to one or more steps, or portions thereof, of the illustrated method. Additionally, the format and symbols employed are provided to explain the logical steps of the method and are understood not to limit the scope of the method.
  • Although various arrow types and line types may be employed in the flow chart diagrams, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.
  • FIG. 5 is a schematic flow chart diagram illustrating one embodiment of an asset grant method 500 of the present invention. The method 500 substantially includes the steps to carry out the functions described above with respect to the operation of the described apparatus in FIGS. 1-4. The description of the method 500 refers to elements of FIGS. 1-4, like numbers referring to like elements. The method 500 begins and the rotate module 415 rotates 505 the global spoke pointer 325 to the next spoke 200 of the plurality of spokes 200. The next spoke 200 may be the first spoke 200 a.
  • The size module 405 determines 510 if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the low threshold 305, wherein the first spoke 200 a is the current spoke. In the embodiment shown in FIG. 3, the size of the second spoke 200 b is greater than the low threshold 305. In an alternate example, the size module 405 may determine 510 that the size of an eighth spoke 200 h of FIG. 3 is not greater than the low threshold 305. If the size of the spoke 200 is greater than the low threshold 305, the request module 410 requests 515 the spoke lock 225. The request module 410 further determines 520 if the spoke lock 225 is granted.
  • If the spoke lock 225 is granted 520, the client 110 removes 525 the asset 205 from the spoke 200, the spoke's size counter 220 is decremented 530, and the spoke lock 225 is released 535. In one embodiment, if the size of the spoke 200 is less than or equal to the low threshold 305, then the rotation count module 420 may determine 540 if a number of global spoke pointer 325 rotations exceeds a rotation threshold. For example as shown in the embodiment in FIG. 3, the size of a third spoke 200 c is less than the low threshold 305 so that the rotation count module 420 may determine 540 if a number of global spoke pointer rotations exceed a rotation threshold. The rotation threshold may be a specified number of rotations such as six (6).
  • If the number of rotations exceeds the rotation threshold, the size module 405 determines 545 if the current spoke is empty. If the current spoke is not empty, the request module 410 requests 515 the spoke lock 225. If the size module 405 determines 545 that the current spoke is empty, the empty count module 425 determines 550 if a number of empty spokes 200 exceed the empty threshold. The empty threshold may be a specified number of empty spokes 200 such as two (2).
  • If the number of empty spokes 200 exceeds the empty threshold, the error module 430 returns 560 an error condition. For example, if three consecutive spokes 200 are empty so that the empty threshold is exceeded, the error module 560 communicates an “asset unavailable” error condition. If the number of spokes 200 does not exceed the empty threshold, the rotate module 415 rotates 555 the global spoke pointer 325 to check the next spoke 200 and the empty count module 425 determines 545 if the new current spoke is empty. The method 500 allocates assets, allowing a client 110 to move to another spoke 200 if a current spoke does not have sufficient assets.
  • FIG. 6 is a schematic flow chart diagram illustrating one alternate embodiment of an asset grant method 600 of the present invention. The asset grant method 600 is the same as the asset grant method 500 of FIG. 5 except that the step 510 is replaced by step 610, which determines 610 if the spoke size is greater than the low threshold 305 and the spoke lock 225 is free. Thus if the spoke size is greater than the low threshold 305, but the spoke lock 225 is not free, the rotation count module 420 may determine 540 if a number of global spoke pointer 325 rotations exceeds a rotation threshold 540.
  • In addition, in step 520 of FIG. 5 the request module 410 determines 520 if the spoke lock 225 is granted and if the spoke lock 225 is not granted the request module 410 waits for the spoke lock 225. Whereas in step 620 of FIG. 6, the request module 410 determines 620 if the spoke lock 225 is granted and if the spoke lock 225 is not granted, the request module 410 requests 515 the spoke lock 225. The method 600 allocates assets, allowing a client 110 to move to another spoke 200 if a spoke lock 225 is not available for a current spoke.
  • FIG. 7 is a schematic flow chart diagram illustrating one embodiment of an asset return method 700 of the present invention. The method 700 substantially includes the steps to carry out the functions described above with respect to the operation of the described apparatus in FIGS. 1-4. The description of the method 700 refers to elements of FIGS. 1-6, like numbers referring to like elements. The method 700 begins and the rotate module 415 rotates 705 the global spoke pointer 325 to the next spoke 200 of the plurality of spokes 200. The next spoke 200 may be the first spoke 200 a.
  • The size module 405 determines 710 if the size of the first spoke 200 a of the plurality of spokes 200 is greater than the high threshold 310. In the embodiment shown in FIG. 3, the size of the first spoke 200 a is greater than the high threshold 310. Alternatively, the size of the second spoke 200 b is not greater than the high threshold 310. If the size of the spoke 200 is not greater than the high threshold 310, the request module 410 requests 715 the spoke lock 225. The request module 410 further determines 720 if the spoke lock 225 is granted.
  • If the spoke lock 225 is granted, the client 110 adds 725 the asset 205 to the spoke 200, the spoke's size counter 220 is incremented 730 and the spoke lock 225 is released 735. In one embodiment, if the size of the spoke 200 is greater than the high threshold 310, the rotation count module 420 may determine 740 if a number of global spoke pointer rotations exceeds a rotation threshold. For example, in the embodiment in FIG. 3, the second spoke 200 b is greater than the high threshold 310 so that the rotation count module 420 may determine 740 if the number of global spoke pointer rotations exceed a rotation threshold.
  • If the number of global spoke pointer rotations does not exceed the rotation threshold, the rotate module 415 rotates 705 the spoke pointer 325 to check the next spoke 200. If the number of global spoke pointer rotations exceeds the rotation threshold 740, the rotate module 415 rotates 745 the global spoke pointer 325 and the request module 410 requests 715 spoke lock 225. The method 700 returns assets 205 to spokes 200, selecting an alternate spoke 200 if a first spoke 220 a has more than a specified number of assets 205.
  • The embodiment of the present invention parallelizes access to assets 205. In addition, the present invention may reduce delays for clients needing to access asset queues. The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (20)

1. An apparatus to parallelize access to assets, the apparatus comprising:
a size module configured to determine if a size of a first spoke of a plurality of spokes organized with a circular order is greater than a low threshold, wherein a global spoke pointer identifies the first spoke as a current spoke and each spoke is configured as an asset queue;
a request module configured to request an asset from the first spoke if the size of the first spoke is greater than the low threshold; and
a rotate module configured to rotate the global spoke pointer to a second—spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
2. The apparatus of claim 1, wherein the rotate module is further configured to rotate the global spoke pointer to the second spoke if a spoke lock for the first spoke is not granted.
3. The apparatus of claim 1, the apparatus further comprising a rotation count module and wherein the request module is further configured to request an asset from the current spoke if the rotation count module determines a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty.
4. The apparatus of claim 3, further comprising an error module and an empty count module and wherein if the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the error module is configured to communicate an error condition if the empty count module determines a number of empty spokes exceeds an empty threshold and wherein the rotate module is configured to rotate the global spoke pointer if the empty count module determines the number of empty spokes does not exceed the empty threshold.
5. The apparatus of claim 1, wherein:
the size module is further configured to determine if the size of the first spoke is less than a high threshold;
the request module is further configured to request adding the asset to the first spoke if the size of the first spoke is less than the high threshold; and
the rotate module is further configured to rotate the global spoke pointer to the second spoke if the size of the first spoke is not less than the high threshold.
6. The apparatus of claim 5, wherein the rotate module rotates the global spoke pointer and the request module requests adding the asset to the new current spoke if a number of global spoke pointer rotations exceeds a rotation threshold.
7. A computer program product comprising a computer useable medium having a computer readable program, wherein the computer readable program when executed on a computer causes the computer to:
determine if a size of a first spoke of a plurality of spokes organized with a circular order is greater than a low threshold, wherein a global spoke pointer identifies the first spoke as a current spoke and each spoke is configured as an asset queue;
request an asset from the first spoke if the size of the first spoke is greater than the low threshold; and
rotate the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
8. The computer program product of claim 7, wherein the computer readable program is further configured to cause the computer to rotate the global spoke pointer to the second spoke if a spoke lock for the first spoke is not granted.
9. The computer program product of claim 7, wherein the computer readable program is further configured to cause the computer to request an asset from the current spoke if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty.
10. The computer program product of claim 9, wherein if the number of global spoke pointer rotations exceeds the rotation threshold and the current spoke is empty, the computer readable program is further configured to cause the computer to:
communicate an error condition if a number of empty spokes exceeds an empty threshold; and
rotate the global spoke pointer if the number of empty spokes does not exceed the empty threshold.
11. The computer program product of claim 7, wherein the computer readable program is further configured to cause the computer to:
remove the asset from the first spoke when a spoke lock for the first spoke is granted;
decrement a size counter for the first spoke; and
free the spoke lock for the first spoke
12. The computer program product of claim 7, wherein the computer readable program is further configured to cause the computer to:
determine if the size of the first spoke is less than a high threshold;
request adding the asset to the first spoke if the size of the first spoke is less than the high threshold; and
rotate the global spoke pointer to the second spoke if the size of the first spoke is not less than the high threshold.
13. The computer program product of claim 12, wherein the computer readable program is further configured to cause the computer to:
add the asset to the first spoke when a spoke lock for the first spoke is granted;
increment a size counter for the first spoke; and
free the spoke lock for the first spoke.
14. The computer program product of claim 13, wherein the computer readable program is further configured to cause the computer to rotate the global spoke pointer and request adding the asset to the new current spoke if a number of global spoke pointer rotations exceeds a rotation threshold.
15. The computer program product of claim 7, wherein the computer readable program is further configured to cause the computer to transparently provide at least one requested asset to each software process that applies for an asset.
16. A system to parallelize access to assets, the system comprising:
a plurality of assets;
a computer configured to store a data set corresponding to each asset, wherein each data set is associated with one spoke of a plurality of spokes organized with a circular order, each spoke is organized as an asset queue, and wherein the computer comprises
a size module configured to determine if a size of a first spoke is greater than a low threshold, wherein a global spoke pointer identifies the first spoke as a current spoke;
a request module configured to request an asset from the first spoke if the size of the first spoke is greater than the low threshold; and
a rotate module configured to rotate the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke becomes the current spoke.
17. The system of claim 16, wherein the assets are configured as pages of shared memory.
18. The system of claim 16, wherein the assets are selected from processors, blade servers, storage devices, and communication channels.
19. The system of claim 16, the computer further comprising a rotation count module and wherein the request module is further configured to request an asset from the current spoke if the rotation count module determines a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty.
20. A method for deploying computer infrastructure, comprising integrating computer-readable code into a computing system, wherein the code in combination with the computing system is capable of performing the following:
determining if a size of a first spoke of a plurality of spokes organized with a circular order is greater than a low threshold, wherein a global spoke pointer identifies the first spoke as a current spoke and each spoke is configured as an asset queue;
requesting an asset from the first spoke if the size of the first spoke is greater than the low threshold;
rotating the global spoke pointer to a second spoke of the plurality of spokes if the size of the first spoke is not greater than the low threshold, wherein the second spoke is the current spoke;
rotating the global spoke pointer to the second spoke if a spoke lock for the first spoke is not granted; and
requesting an asset from the current spoke if a number of global spoke pointer rotations exceeds a rotation threshold and if a size of the current spoke is not empty.
US11/691,354 2007-03-26 2007-03-26 Apparatus, system, and method for parallelizing access to shared assets Expired - Fee Related US8521878B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/691,354 US8521878B2 (en) 2007-03-26 2007-03-26 Apparatus, system, and method for parallelizing access to shared assets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/691,354 US8521878B2 (en) 2007-03-26 2007-03-26 Apparatus, system, and method for parallelizing access to shared assets

Publications (2)

Publication Number Publication Date
US20080243522A1 true US20080243522A1 (en) 2008-10-02
US8521878B2 US8521878B2 (en) 2013-08-27

Family

ID=39795857

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/691,354 Expired - Fee Related US8521878B2 (en) 2007-03-26 2007-03-26 Apparatus, system, and method for parallelizing access to shared assets

Country Status (1)

Country Link
US (1) US8521878B2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013864A1 (en) * 1999-03-12 2002-01-31 Dandrea Robert G. Queuing architecture including a plurality of queues and assocated method for controlling admission for disk access requests for video content
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
US20040120332A1 (en) * 2002-12-24 2004-06-24 Ariel Hendel System and method for sharing a resource among multiple queues
US6934294B2 (en) * 2000-03-02 2005-08-23 Alcatel Qualified priority queue scheduler
US6941379B1 (en) * 2000-05-23 2005-09-06 International Business Machines Corporation Congestion avoidance for threads in servers
US20080013450A1 (en) * 2006-04-03 2008-01-17 Worley John S System and method for time-out management

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013864A1 (en) * 1999-03-12 2002-01-31 Dandrea Robert G. Queuing architecture including a plurality of queues and assocated method for controlling admission for disk access requests for video content
US6934294B2 (en) * 2000-03-02 2005-08-23 Alcatel Qualified priority queue scheduler
US6941379B1 (en) * 2000-05-23 2005-09-06 International Business Machines Corporation Congestion avoidance for threads in servers
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
US20040120332A1 (en) * 2002-12-24 2004-06-24 Ariel Hendel System and method for sharing a resource among multiple queues
US20080013450A1 (en) * 2006-04-03 2008-01-17 Worley John S System and method for time-out management

Also Published As

Publication number Publication date
US8521878B2 (en) 2013-08-27

Similar Documents

Publication Publication Date Title
US8301847B2 (en) Managing concurrent accesses to a cache
US7047337B2 (en) Concurrent access of shared resources utilizing tracking of request reception and completion order
US8381230B2 (en) Message passing with queues and channels
JP5159884B2 (en) Network adapter resource allocation between logical partitions
US10733027B2 (en) Memory allocator
WO2019223596A1 (en) Method, device, and apparatus for event processing, and storage medium
US20180095694A1 (en) Small storage volume management
US20220043678A1 (en) Efficient distributed scheduler for a data partitioned system
EP1949230A2 (en) Method and apparatus for increasing throughput in a storage server
US10657045B2 (en) Apparatus, system, and method for maintaining a context stack
US8543722B2 (en) Message passing with queues and channels
CN110162395B (en) Memory allocation method and device
US7509461B1 (en) Method and apparatus for intelligent buffer cache pre-emption
CN107291371B (en) Method and device for implementing a read-write lock
CN110569112A (en) Log data writing method and object storage daemon device
US8521878B2 (en) Apparatus, system, and method for parallelizing access to shared assets
CN113467926B (en) Packet processing method and system for storage server with storage device
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN116244042A (en) Airborne high-performance file server based on SMP partition
성한울 Efficient I/O Management Schemes for All-Flash HPC Storage Systems
Liu Rethinking Storage System Design in Distributed NVRAM+ RDMA Clusters
KR20180123350A (en) Method for managing data by distributing and apparatus using the same

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MILLER, JUSTIN THOMSON;REEL/FRAME:019726/0704

Effective date: 20070323

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.)

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20170827

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载