US20130254320A1 - Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth - Google Patents
Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth Download PDFInfo
- Publication number
- US20130254320A1 US20130254320A1 US13/472,397 US201213472397A US2013254320A1 US 20130254320 A1 US20130254320 A1 US 20130254320A1 US 201213472397 A US201213472397 A US 201213472397A US 2013254320 A1 US2013254320 A1 US 2013254320A1
- Authority
- US
- United States
- Prior art keywords
- objects
- priority
- cached
- priorities
- server
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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/61—Scheduling 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
Definitions
- the present invention relates to a computer program product, system, and method for determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth.
- Wide Area Network (WAN) caching involves replicating data from a primary or source site to one or more secondary site to address WAN performance and network outage issues.
- the primary and secondary sites may provide network file server services, such as with Network Attached Storage (NAS) servers.
- NAS Network Attached Storage
- WAN caching modifications to data cached at remote sites is pre-populated to remote caches at remote sites as soon as changes are made at the primary site for files cached at remote sites to make the data readily available at the remote site.
- the data cached at the remote sites is available to users connecting to the remote sites even after disconnection between the remote cache site and the primary source site.
- a large number of files at the primary site may be modified, which results in a large queue of modifications to replicate to the remote sites, which may consume a significant amount of network bandwidth.
- network bandwidth is very low, so WAN caching may experience bottlenecks during periods of low network bandwidth.
- Objects are copied from a primary site to a secondary site to cache at the secondary site, wherein the primary site includes a primary server and primary storage and wherein the secondary site includes a secondary server and a secondary storage, wherein the primary and secondary sites connect via a network.
- Priorities are received from the secondary server for the objects at the secondary site based on determinations made by the secondary server with respect to the objects cached at the secondary storage.
- a determination is made of modifications to the objects at the primary storage that are cached at the secondary storage.
- the received priorities for the objects from the secondary server are used to control a transfer of the determined modifications to the objects to the secondary server.
- a secondary site receives objects transmitted from a primary site to cache at the secondary site, wherein the primary site includes a primary server and primary storage and wherein the secondary site includes a secondary server and a secondary storage to cache the objects from the primary site, wherein the primary and secondary sites are connected via a network;
- the secondary server maintains priority association information providing an association of priorities and object attributes. A determination is made of attributes for the objects cached at the secondary site. A determination is made from the priority association information the priorities for the cached objects corresponding to the determined attributes. The determined priorities are transmitted to the primary server for the objects cached at the secondary storage for the primary server to use control a transfer of the determined modifications to the objects to the secondary server.
- FIG. 1 illustrates a network computing environment in which embodiments are implemented.
- FIG. 2 illustrates an embodiment of an object information entry at the primary site.
- FIG. 3 illustrates an embodiment of a remote cache queue entry.
- FIG. 4 illustrates an embodiment of a network bandwidth assignment priority
- FIG. 5 illustrates an embodiment of object information maintained at the secondary site.
- FIG. 6 illustrates an embodiment of user access frequency based priority assignment information.
- FIG. 7 illustrates an embodiment of customer support level priority assignment information.
- FIG. 8 illustrates an embodiment of event based priority assignment information.
- FIG. 9 illustrates an embodiment of content type/attribute based priority assignment information.
- FIG. 10 illustrates an embodiment of operations to process a request for an object from a secondary site.
- FIG. 11 illustrates an embodiment of operations to process a modification to an object cached at a secondary site.
- FIG. 12 illustrates an embodiment of operations to process received priority information for an object cached at a secondary site.
- FIG. 13 illustrates an embodiment of operations to transfer modifications to cached objects to secondary sites.
- FIG. 14 illustrates an embodiment of operations to determine priority of modifications to cached objects to transfer.
- FIG. 15 illustrates an embodiment of operations to determine the priority of cached objects at the secondary site.
- FIG. 16 illustrates an embodiment of operations to determine cached object priority based on user access frequency of the cached object.
- FIG. 17 illustrates an embodiment of operations to determine cached object priority based on customer service level of requesting user that accessed the cached object.
- FIG. 18 illustrates an embodiment of operations to determine cached object priority based on an external event.
- FIG. 19 illustrates an embodiment of operations to determine cached object priority based on a content type of the cached object.
- FIG. 20 illustrates an implementation of a computer/server node in the network computing embodiment.
- FIG. 21 illustrates an embodiment of a cloud computing environment.
- FIG. 22 illustrates an embodiment of abstraction model layers of a cloud computing environment.
- Described embodiments provide techniques to have a secondary server at a secondary site determine priority for cached objects based on measured or anticipated access to cached objects. This secondary site determined priority may be sent to the primary site to use to determine an ordering for transmitting modifications for cached objects based on network bandwidth measurements to favor the transfer of higher priority objects during periods of limited network bandwidth. Objects having secondary site lower determined priorities may experience delays in transmission during low periods of network bandwidth.
- FIG. 1 illustrates an embodiment of a network computing environment having a primary site 2 that communicates with one or more secondary sites 4 over a network 6 .
- the primary site 2 includes a primary server 8 and a primary storage 10 having a plurality of objects 12 .
- the secondary site 4 includes a secondary server 14 and a secondary storage 16 including a remote cache 18 to cache objects 12 at the primary storage 10 requested by clients 21 accessing the secondary server 14 .
- the secondary server 12 may provide a global namespace of objects 12 at the primary site 2 available to clients 21 accessing the secondary server 12 as cached objects 12 ′.
- the clients 21 accessing a primary storage 10 object 12 made available through the secondary server 14 may cause the caching of the object 12 in the remote cache 18 as object 12 ′.
- the primary server 8 and secondary server 14 may comprise Network Attached Storage (NAS) servers that provides file based storage services to the clients 21 on the network 6 .
- the servers 8 and 14 may be implemented with other suitable network file server technology.
- NAS Network Attached Storage
- the primary server 8 includes a network cache manager 20 to manage caching operations at the secondary sites 4 ; a remote cache queue 22 having information on modifications for objects 12 to copy to the secondary servers 14 caching objects 12 ′; object information 23 on objects 12 ; and a network bandwidth priority assignment 24 providing an assignment of network bandwidth thresholds defining ranges of network bandwidths to different sets of priorities that may be associated with the objects 12 .
- the secondary server 14 includes a remote cache manager 26 to retrieve objects 12 from the primary site 2 requested by clients 21 connected to the secondary server 14 over the network 6 .
- the remote cache manager 26 may provide a virtual global namespace to clients 21 for objects 12 maintained at the primary site 2 .
- the secondary server 14 further includes priority association information 28 associating priorities with object attributes for the remote cache manager 26 to use to assign priorities to cached objects 12 ′ in the remote cache 18 and cached object priority information 30 indicating the determined priorities of cached objects 12 ′ in the remote cache 18 .
- the servers 8 and 14 may comprise a server class enterprise computing device capable of servicing requests from multiple connected clients 21 .
- the clients 21 may comprise a desktop computer, server, host, portable computing device, such as a smart phone, tablet computing device, telephony device, laptop computer, portable device capable of being mounted in an automobile, etc.
- the storages 10 , 16 may be implemented in one or more storage devices known in the art, such as interconnected hard disk drives (e.g., configured as a DASD, RAID, JBOD, etc.), solid state storage devices (e.g., EEPROM (Electrically Erasable Programmable Read-Only Memory), flash memory, flash disk, Solid State Devices (SSD), storage-class memory (SCM)), electronic memory, magnetic tape media, tape cartridges, etc.
- the network 8 may comprise a local area network (LAN), storage area network (SAN), wide area network (WAN), a wireless network, the Internet, etc.
- the network 8 may include wireless network routers and may be part of a cloud computing model.
- FIG. 2 illustrates an embodiment of an object information entry 40 maintained in the primary server 8 object information 23 , having an object identifier (ID) 42 of an object 12 ; a priority 44 of the object as determined at a secondary site 4 having access to the object 42 as a cached object 12 ′; one or more secondary servers 46 having non-exclusive read access to the modified object 42 ; and a secondary server 48 having exclusive write access to the object 42 .
- ID object identifier
- FIG. 2 illustrates an embodiment of an object information entry 40 maintained in the primary server 8 object information 23 , having an object identifier (ID) 42 of an object 12 ; a priority 44 of the object as determined at a secondary site 4 having access to the object 42 as a cached object 12 ′; one or more secondary servers 46 having non-exclusive read access to the modified object 42 ; and a secondary server 48 having exclusive write access to the object 42 .
- only one secondary server 14 at one secondary site 4 may have exclusive write access to modify an object 12 .
- FIG. 3 illustrates an embodiment of a remote cache queue entry 50 maintained in the remote cache queue 22 having an object identifier (ID) 52 of a modified object 12 ; a priority 54 of the object as determined at a secondary site 4 having access to the object 52 as a cached object 12 ′; and a transfer size 56 of that portion or all of the object 52 to transfer.
- the transfer size 56 may comprise the size of the modified portion if only the modifications are transmitted to secondary sites 4 caching the object or may comprise the entire object size if the whole object including modifications is transferred.
- FIG. 4 illustrates an embodiment of the network bandwidth priority assignment 24 as including a plurality of network bandwidth threshold/priority set pairs 60 a / 62 a , 60 b / 62 b . . . 60 n / 62 n , where each priority set has one or more priority values of objects to transfer.
- the network bandwidth thresholds 60 a , 60 b . . . 60 n which may go from high to low network bandwidth thresholds, are used to determine which object priorities to transfer over the network 6 based on measured network bandwidth. For instance, if measured network bandwidth exceeds the high first network bandwidth threshold ( 1 ) 60 a , then any objects having priorities in the first priority set ( 1 ) 62 a may be transferred, which may comprise all priorities.
- the lowest priority set (n) indicates a priority set to use when the measured network bandwidth is between the lowest network bandwidth threshold (n) and the next to lowest threshold (n-1). If the measured network bandwidth is between any two consecutive thresholds 60 a , 60 b . . . 60 n , then the priority set of priorities for objects to transfer is the priority set 62 a , 62 b . . . 62 n associated with the lower bandwidth threshold 60 b . . . 60 n of the two consecutive network bandwidth thresholds defining a range including the measured network bandwidth.
- the measured network bandwidth is between the first network bandwidth threshold ( 1 ) and the second network bandwidth threshold ( 2 )
- objects having priorities indicated in the second priority set ( 2 ) are transferred.
- the number of priorities in the priority sets 62 a , 62 b . . . 62 n may decrease to delay transfer of modifications for lower priority objects to limit transmissions to higher priority objects during lower network bandwidth periods.
- FIG. 5 illustrates an embodiment of an instance 70 of the cached object priority information 30 for cached objects at the secondary site 4 as including an object ID 72 and a priority 74 assigned to the object by the secondary server 14 based on user access to the cached object 12 ′ at the secondary site 4 .
- FIG. 6 illustrates an embodiment 80 of priority association information 28 used by the secondary server 14 to determine a priority to assign to cached objects 12 ′ based on user access frequency for cached objects 12 ′.
- Access frequency thresholds 82 a , 82 b . . . 82 n which may go from high user access frequency thresholds to lower, are used to determine which priority to assign to cached objects 12 ′ based on user access frequency. For instance, if the measured user access frequency for a cached object 12 ′ exceeds the high first access frequency threshold ( 1 ) 82 a , then the assigned priority for that cached object 12 ′ is the highest first priority ( 1 ) 84 a.
- the lowest access frequency threshold 82 n for the cached object 12 ′ may comprise the lowest possible value, so the assigned priority for that cached object 12 is the lowest possible priority (n) 84 n. If the measured user access frequency for the cached object 12 ′ is between any two consecutive user access frequency thresholds 82 a , 82 b . . . 82 n , then the assigned priority for the cached object 12 ′ is the priority 84 a , 84 b . . . 84 n associated with the lower frequency access threshold 82 b . . . 82 n of the two consecutive access frequency thresholds bounding the measured user access frequency for the cached object 12 .
- the second priority ( 2 ) 84 b is assigned to the cached object 12 ′.
- the assigned priority becomes smaller because less frequently accessed objects are deemed to have lower need and priority.
- FIG. 7 illustrates an embodiment 90 of priority association information 28 used by the secondary server 14 to determine a priority to assign to cached objects 12 ′ based on a customer support level of a customer that has accessed the cached object 12 ′.
- a customer support level of a customer For each possible customer support level 92 a , 92 b . . . 92 n there is a corresponding priority 94 a , 94 b . . . 94 n, respectively, to assign to an object accessed by a customer operating under the indicated customer support level 92 a , 92 b . . . 92 n.
- the customer support level may be considered for the customer that accessed the cached object 12 ′ to cause it to be cached, the most recent accessing customers, or some calculated customer support level based on the support level of the last accessing customers. In this way, cached objects 12 ′ being accessed at the secondary site 4 by customers having or paying for a higher support level are assigned a higher priority by the secondary server 14 .
- FIG. 8 illustrates an embodiment of an entry 100 in the priority association information 28 used by the secondary server 14 to determine a priority to assign to cached objects 12 ′ based on an event occurring in an environment external to the secondary server 14 , such as an event in the real world, a virtual world, political world, natural environment, financial world, etc., that would result in increased or decreased demand for a cached object 12 ′.
- the event based priority association includes a plurality of entries 100 , one for each different possible event.
- Each event based entry 100 includes an event description 102 identifying the event, effected objects 104 whose access at the secondary site 4 is likely to be effected by the event 102 in a predictable manner, and a priority 106 to assign to the effected objects 104 due to the event.
- an event is likely to lead to high demand for an object, such as a sudden financial market move that will likely lead to changed access patters of financial information related objects, then the priority for that object will be increased due to the event. Certain events may cause the priority for effected objects to be lowered if the event will predictably lead to less access of an object.
- FIG. 9 illustrates an embodiment of an entry 90 in the priority association information 28 used by the secondary server 14 to determine a priority to assign to cached objects 12 ′ based on determined content type or attributes of the cached objects 12 .
- the content/attributes based priority association information includes a plurality of entries 110 , one for each content type/attribute that is to be associated with a priority.
- Each entry 110 identifies a content type/attribute 112 and associated priority 114 , so that cached objects 12 ′ determined to have the content type/attribute 112 of an entry 110 are assigned the associated priority 114 .
- FIG. 10 illustrates an embodiment of operations performed by the network cache manager 20 upon receiving a request for an object from the secondary server 14 at the secondary site 4 .
- the network cache manager 20 Upon receiving (at block 130 ) a request for an object, the network cache manager 20 updates (at block 132 ) the object information entry 40 ( FIG. 2 ) for the object to indicate the secondary server 14 requesting read or write access by indicating the secondary server 14 identifier in fields 46 or 48 . If (at block 134 ) access is granted, then the network cache manager 20 transfers the requested object to the requesting secondary server 14 .
- FIG. 11 illustrates an embodiment of operations performed by the network cache manager 20 to process an update or modification to an object cached in at least one secondary site 4 .
- the network cache manager 20 Upon receiving (at block 150 ) the modification, the network cache manager 20 applies (at block 152 ) the modification to the object 12 and determines (at block 154 ) the priority for the modified object 12 , such as from priority 44 in the object information entry 40 for the object.
- the network cache manager 20 adds (at block 156 ) an entry 50 ( FIG. 3 ) to the remote cache queue 22 for the modified object indicating the priority 54 . If there is a preexisting entry 50 in the remote cache queue 22 for the modified object 12 , then that entry 50 may be updated or supplemented with the information on the new modification.
- the entry 50 indicates the priority 54 and a transfer size 56 of the modification or object to transfer.
- FIG. 12 illustrates an embodiment of operations performed by the network cache manager 20 to process priority information for a cached object 12 ′ received from a secondary server 14 .
- the network cache manager 20 Upon receiving (at block 170 ) the priority information for a cached object assigned by the secondary server 14 , the network cache manager 20 updates (at block 172 ) the priority 44 for the object 12 with the received priority.
- the update operation may overwrite the existing priority with the received priority, determine an aggregate priority based on previously received priorities for the object, etc.
- the network cache manager 20 may receive priorities for a same object cached at multiple secondary sites. Because each secondary site is calculating priorities for cached objects based on access and potential access attributes of the cached objects particular to each secondary site, the network cache manager 20 may receive different priorities from different secondary sites 4 for the same object 12 . In such case, the network cache manager 20 may have to select from or aggregate the different received priorities for one object 12 .
- FIG. 13 illustrates an embodiment of operations performed by the network cache manager 20 to transfer modifications to cached objects to the secondary server 14 caching the objects 12 ′ using the remote cache queue 22 .
- the network cache manager 20 determines (at block 192 ) current network bandwidth conditions. The priority associated with that determined network bandwidth may be determined from the network bandwidth priority assignment 24 to determine the priority set of one or more priorities of objects to transfer.
- a transfer period is started (at block 196 ), which may be determined by a fixed number of transfers or a time clock.
- the network cache manager 20 determines (at block 202 ) a cached object of the determined priority(s) in the remote cache queue 22 based on the cache ordering.
- the remote cache queue 22 entries may be ordered by priority so that modifications for higher priority objects are transferred first before modifications for lower priority objects. Further, the queue 22 may select modifications within a priority based on a transfer size 56 to favor transferring smaller sized modifications/objects to maximize the number of cached objects receiving the modifications.
- the modifications for the determined cached object are transferred (at block 202 ) to the at least one secondary server 14 caching the object, as indicated in the secondary servers fields 46 and 48 of the object information entry 40 for the object.
- control proceeds back to block 198 to select a next modification to process. If (at block 204 ) the transfer period has ended, e.g., number of transfers occurred, time expired, etc., then control proceeds back to block 192 to determine the current network 6 bandwidth. If (at block 198 ) the remote cache queue 22 is empty, then control proceeds to block 204 to consider whether the transfer period is over.
- the measured network 6 bandwidth and priorities assigned to the objects by the secondary sites 4 accessing the objects are used to determine which objects the primary server 8 transfers, based on object priority and priorities assigned to different network bandwidth ranges.
- FIG. 14 illustrates an embodiment of the operations performed by the network cache manager 20 at block 200 in FIG. 13 to determine modifications for objects identified in the remote cache queue 22 to transfer when there are three network bandwidth threshold 60 a , 60 b , 60 n /priority set 62 a , 62 b , 62 n pairs .
- the network cache manager 20 copies modifications for cached objects having priorities in the first priority set 62 a , which may comprise all priorities because measured network bandwidth is high, exceeding the highest threshold 60 a.
- Modifications from the remote cache queue 22 may be selected based on the queue 22 ordering, such as priority 54 then transfer size 56 . If (at block 222 ) the measured network bandwidth is less than the first network bandwidth threshold ( 1 ) 60 a and greater (at block 226 ) than the second network bandwidth threshold ( 2 ) 60 b , then the network cache manager 20 copies (at block 228 ) modifications for cached objects having priorities in the second priority set 62 b , which may comprise priorities except one or more lower priorities, and queues (at block 230 ) in the remote cache queue 22 modifications for cached objects having priorities not in the second set 62 b. This delays the transfer of modifications for certain lower priority objects while network bandwidth is below the high threshold.
- the network cache manager 20 copies (at block 234 ) modifications for cached objects having priorities in the third priority set 62 n , according to the remote cache queue 22 ordering. Modifications for cached objects 12 having priorities not in the third priority set 62 n remain queued (at block 236 ) in the remote cache queue 22 . If (at block 232 ) the measured network bandwidth is below a lowest possible level, then control may end without transferring any objects. With the operations of FIG. 14 , additional thresholds and priority sets may be considered to determine the priorities of objects to transfer for additional ranges defined by further network bandwidth thresholds.
- FIG. 15 illustrates an embodiment of operations performed by the remote cache manager 26 at the secondary server 14 to determine the priority of cached objects 12 based on attributes of the cached objects 12 at the secondary site 4 .
- the remote cache manager 26 determines (at block 252 ) attributes of the cached objects 12 ′ and determines (at block 254 ) from the priority association information 28 the priorities for the cached objects corresponding to the determined attributes.
- the remote cache manager 26 transmits (at block 256 ) to the primary server 8 the determined priorities for the objects 12 ′ cached at the secondary site 4 for the primary server 8 to use to control an order of how modifications are copied to the secondary sites.
- the secondary server 14 transmits the priority information for cached objects 12 ′ directly to the primary server 24 .
- the secondary server 14 may transmit the determined priority to another secondary site 4 , so that this intermediary secondary site 4 writes the data and transmits the priority to the primary server 8 .
- FIG. 16 illustrates an embodiment of operations performed by the remote cache manager 26 to determine priority information based on user access frequency at the secondary site 4 for a cached object 12 ′.
- the remote cache manager 26 determines (at block 272 ) an object access frequency based on user access of the cached object at the secondary site.
- the determined object access frequency is compared (at block 274 ) to at least one of the access frequency thresholds 62 a , 62 b . . . 62 n ( FIG. 6 ).
- a determination is made (at block 276 ) of the priority associated with the determined at least one user access frequency threshold.
- the determined priority for the cached object 12 ′ is indicated (at block 278 ) in the cached object priority information 30 and transmitted to the primary server 8 to use to control transmissions of modifications to cached objects.
- FIG. 17 illustrates an embodiment of operations performed by the remote cache manager 26 based on customer support level of users accessing the cached object 12 ′ at the secondary site 4 .
- the remote cache manager 26 determines (at block 302 ) a requesting user that accessed the cached object 12 ′ at the secondary site 4 .
- a determination is made (at block 304 ) of the customer support level of the requesting user.
- the remote cache manager 26 determines (at block 306 ) from the customer support level priority association information 90 the priority associated with the customer support level for the requesting user.
- the determined priority is indicated (at block 308 ) for the cached object 12 ′ in the cached object priority information 30 and transmitted to the primary server 8 .
- the customer support level may be considered for a most recent requesting user, the requesting user that first accessed the cached object 12 ′ to cause the caching or a customer support level of a plurality of requesting users to provide an aggregate priority.
- FIG. 18 illustrates an embodiment of operations performed by the remote cache manager 26 to determine priority of cached objects 12 ′ based on occurrence of external events that are predicted to effect access to the cached objects 12 ′.
- the remote cache manager 20 Upon initiating (at block 330 ) an operation to determine event based priority, the remote cache manager 20 detects (at block 332 ) an event occurring in an environment external to the operations of the secondary server 14 that is likely to result in increased access to a cached object 12 ′ and that corresponds to an event description 102 indicated in the event priority information 100 ( FIG. 8 ). This event information may be transmitted to the secondary server 14 or pulled by the secondary server 14 from a remote location, such as a web site.
- the remote cache manager 26 determines (at block 334 ) from the event based priority information 100 the priority 106 associated with the external event description 102 indicated in one entry 100 corresponding to the detected event.
- the determined priority is indicated (at block 336 ) for the cached object 12 ′ in the cached object priority information 30 and transmitted to the primary server 8 . In this way the occurrence of an external event that is predicted to effect access to an object, increase or decrease, is used to alter the priority for the object.
- FIG. 19 illustrates an embodiment of operations performed by the remote cache manager 26 to determine priority of cached objects 12 ′ based on the content type of the cached objects 12 ′.
- the remote cache manager 20 processes (at block 352 ) content of the cached object 12 ′ to determine at least one content type associated with the cached object content.
- a determination is made (at block 354 ) of at least one of the priorities associated with the determined at least one content type, such as the priority 114 associated with the determined content type 112 indicated in an entry 110 of the content type priority association information.
- the determined priority is indicated (at block 358 ) for the cached object 12 ′ in the cached object priority information 30 and transmitted to the primary server 8 .
- one or more of the different priority determinations may be used to determine by determining a combined or aggregate priority by executing one or more of the user access frequency priority determination ( FIG. 16 ), customer service level priority determination ( FIG. 17 ), event based priority determination ( FIG. 18 ), and content type priority determination ( FIG. 19 ). Different determined priorities may then be aggregated or combined.
- Described embodiments provide techniques to have a secondary server at a secondary site determine priority for cached objects based on measured or anticipated access to cached objects based on factors such as user access at the secondary site, customer support levels of customers accessing at the secondary site, content type, events, etc.
- This secondary site determined priority may be sent to the primary site to use to determine an ordering for transmitting modifications for cached objects based on network bandwidth measurements to favor the transfer of higher priority objects during periods of limited network bandwidth.
- the computing environment of FIG. 1 may be part of a cloud computing model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service.
- the cloud computing environment may provide cloud based remote caching of objects from a primary site to a plurality of secondary sites.
- This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
- On-demand self-service a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider.
- Resource pooling the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter).
- Rapid elasticity capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
- Measured service cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.
- level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts).
- SaaS Software as a Service: the capability provided to the consumer is to use the provider's applications running on a cloud infrastructure.
- the applications are accessible from various source devices through a thin source interface such as a web browser (e.g., web-based e-mail).
- a web browser e.g., web-based e-mail
- the consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
- PaaS Platform as a Service
- the consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.
- IaaS Infrastructure as a Service
- the consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
- Private cloud the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises.
- Public cloud the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
- Hybrid cloud the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).
- a cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability.
- An infrastructure comprising a network of interconnected nodes.
- FIG. 20 illustrates an embodiment of a cloud computing node or computer 402 which may comprise an implementation of the servers 8 and 14 and the clients 21 .
- Computer 402 is only one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, cloud computing node 402 is capable of being implemented and/or performing any of the functionality set forth hereinabove.
- the cloud computing computer 402 is operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 402 include, but are not limited to, personal computer systems, server computer systems, thin sources, thick sources, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.
- Computer system/server 402 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system.
- program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types.
- Computer system/server 402 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer system storage media including memory storage devices.
- computer system/server (cloud node) 402 is shown in the form of a general-purpose computing device.
- the components of computer system/server 402 may include, but are not limited to, one or more processors or processing units 404 , a system memory 406 , and a bus 408 that couples various system components including system memory 406 to processor 404 .
- Bus 408 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
- Computer system/server 402 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 402 , and it includes both volatile and non-volatile media, removable and non-removable media.
- System memory 406 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 410 and/or cache memory 412 .
- Computer system/server 402 may further include other removable/non-removable, volatile/non-volatile computer system storage media.
- storage system 413 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”).
- memory 406 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
- Program/utility 414 having a set (at least one) of program modules 416 , may be stored in memory 406 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.
- Program modules 416 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.
- Computer system/server 402 may also communicate with one or more external devices 418 such as a keyboard, a pointing device, a display 420 , etc.; one or more devices that enable a user to interact with computer system/server 12 ; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 402 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 422 . Still yet, computer system/server 402 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 424 .
- LAN local area network
- WAN wide area network
- public network e.g., the Internet
- network adapter 424 communicates with the other components of computer system/server 402 via bus 408 .
- bus 408 It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 402 . Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
- FIG. 21 illustrates an embodiment of a cloud computing environment 450 .
- cloud computing environment 450 comprises one or more cloud computing nodes 402 with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA) or cellular telephone 454 A, desktop computer 454 B, laptop computer 454 C, and/or automobile computer system 454 N may communicate.
- Nodes 402 may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as Private, Community, Public, or Hybrid clouds as described hereinabove, or a combination thereof.
- This allows cloud computing environment 450 to offer infrastructure, platforms and/or software as services for which a cloud consumer does not need to maintain resources on a local computing device.
- computing devices 454 A-N shown in FIG. 21 are intended to be illustrative only and that computing nodes 402 and cloud computing environment 450 can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser).
- FIG. 22 provides an embodiment a set of functional abstraction layers provided by cloud computing environment 450 . It should be understood in advance that the components, layers, and functions shown in FIG. 22 re intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:
- Hardware and software layer 460 includes hardware and software components.
- hardware components include mainframes, in one example IBM® zSeries® systems; RISC (Reduced Instruction Set Computer) architecture based servers, in one example IBM pSeries® systems; IBM xSeries® systems; IBM BladeCenter® systems; storage devices; networks and networking components.
- software components include network application server software, in one example IBM WebSphere® application server software; and database software, in one example IBM DB2® database software.
- IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide).
- Virtualization layer 462 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual sources.
- management layer 464 may provide the functions described below.
- Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment.
- Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses.
- Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources.
- User portal provides access to the cloud computing environment for consumers and system administrators.
- Service level management provides cloud computing resource allocation and management such that required service levels are met.
- Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.
- SLA Service Level Agreement
- Workloads layer 466 provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions may provide multi-tenancy for a cloud computing environment such as described with respect to FIGS. 1-19 , above.
- aspects of the embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.”
- aspects of the embodiments may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
- a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
- a computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
- a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- an embodiment means “one or more (but not all) embodiments of the present invention(s)” unless expressly specified otherwise.
- Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise.
- devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
- 1. Field of the Invention
- The present invention relates to a computer program product, system, and method for determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth.
- 2. Description of the Related Art
- Wide Area Network (WAN) caching involves replicating data from a primary or source site to one or more secondary site to address WAN performance and network outage issues. The primary and secondary sites may provide network file server services, such as with Network Attached Storage (NAS) servers. With WAN caching, modifications to data cached at remote sites is pre-populated to remote caches at remote sites as soon as changes are made at the primary site for files cached at remote sites to make the data readily available at the remote site. With WAN caching, the data cached at the remote sites is available to users connecting to the remote sites even after disconnection between the remote cache site and the primary source site.
- In a large enterprise environment, a large number of files at the primary site may be modified, which results in a large queue of modifications to replicate to the remote sites, which may consume a significant amount of network bandwidth. Further, in certain countries and regions, network bandwidth is very low, so WAN caching may experience bottlenecks during periods of low network bandwidth.
- There is a need in the art for improved techniques for optimizing WAN caching data at remote secondary sites.
- Provided are a computer program product, system, and method for determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth. Objects are copied from a primary site to a secondary site to cache at the secondary site, wherein the primary site includes a primary server and primary storage and wherein the secondary site includes a secondary server and a secondary storage, wherein the primary and secondary sites connect via a network. Priorities are received from the secondary server for the objects at the secondary site based on determinations made by the secondary server with respect to the objects cached at the secondary storage. A determination is made of modifications to the objects at the primary storage that are cached at the secondary storage. The received priorities for the objects from the secondary server are used to control a transfer of the determined modifications to the objects to the secondary server.
- In further embodiments, a secondary site receives objects transmitted from a primary site to cache at the secondary site, wherein the primary site includes a primary server and primary storage and wherein the secondary site includes a secondary server and a secondary storage to cache the objects from the primary site, wherein the primary and secondary sites are connected via a network; The secondary server maintains priority association information providing an association of priorities and object attributes. A determination is made of attributes for the objects cached at the secondary site. A determination is made from the priority association information the priorities for the cached objects corresponding to the determined attributes. The determined priorities are transmitted to the primary server for the objects cached at the secondary storage for the primary server to use control a transfer of the determined modifications to the objects to the secondary server.
-
FIG. 1 illustrates a network computing environment in which embodiments are implemented. -
FIG. 2 illustrates an embodiment of an object information entry at the primary site. -
FIG. 3 illustrates an embodiment of a remote cache queue entry. -
FIG. 4 illustrates an embodiment of a network bandwidth assignment priority. -
FIG. 5 illustrates an embodiment of object information maintained at the secondary site. -
FIG. 6 illustrates an embodiment of user access frequency based priority assignment information. -
FIG. 7 illustrates an embodiment of customer support level priority assignment information. -
FIG. 8 illustrates an embodiment of event based priority assignment information. -
FIG. 9 illustrates an embodiment of content type/attribute based priority assignment information. -
FIG. 10 illustrates an embodiment of operations to process a request for an object from a secondary site. -
FIG. 11 illustrates an embodiment of operations to process a modification to an object cached at a secondary site. -
FIG. 12 illustrates an embodiment of operations to process received priority information for an object cached at a secondary site. -
FIG. 13 illustrates an embodiment of operations to transfer modifications to cached objects to secondary sites. -
FIG. 14 illustrates an embodiment of operations to determine priority of modifications to cached objects to transfer. -
FIG. 15 illustrates an embodiment of operations to determine the priority of cached objects at the secondary site. -
FIG. 16 illustrates an embodiment of operations to determine cached object priority based on user access frequency of the cached object. -
FIG. 17 illustrates an embodiment of operations to determine cached object priority based on customer service level of requesting user that accessed the cached object. -
FIG. 18 illustrates an embodiment of operations to determine cached object priority based on an external event. -
FIG. 19 illustrates an embodiment of operations to determine cached object priority based on a content type of the cached object. -
FIG. 20 illustrates an implementation of a computer/server node in the network computing embodiment. -
FIG. 21 illustrates an embodiment of a cloud computing environment. -
FIG. 22 illustrates an embodiment of abstraction model layers of a cloud computing environment. - Described embodiments provide techniques to have a secondary server at a secondary site determine priority for cached objects based on measured or anticipated access to cached objects. This secondary site determined priority may be sent to the primary site to use to determine an ordering for transmitting modifications for cached objects based on network bandwidth measurements to favor the transfer of higher priority objects during periods of limited network bandwidth. Objects having secondary site lower determined priorities may experience delays in transmission during low periods of network bandwidth.
-
FIG. 1 illustrates an embodiment of a network computing environment having aprimary site 2 that communicates with one or moresecondary sites 4 over anetwork 6. Theprimary site 2 includes aprimary server 8 and aprimary storage 10 having a plurality ofobjects 12. Thesecondary site 4 includes asecondary server 14 and asecondary storage 16 including aremote cache 18 to cacheobjects 12 at theprimary storage 10 requested byclients 21 accessing thesecondary server 14. Thesecondary server 12 may provide a global namespace ofobjects 12 at theprimary site 2 available toclients 21 accessing thesecondary server 12 ascached objects 12′. Theclients 21 accessing aprimary storage 10object 12 made available through thesecondary server 14 may cause the caching of theobject 12 in theremote cache 18 asobject 12′. In certain embodiments, theprimary server 8 andsecondary server 14 may comprise Network Attached Storage (NAS) servers that provides file based storage services to theclients 21 on thenetwork 6. In alternative embodiments, theservers - The
primary server 8 includes anetwork cache manager 20 to manage caching operations at thesecondary sites 4; aremote cache queue 22 having information on modifications forobjects 12 to copy to thesecondary servers 14caching objects 12′;object information 23 onobjects 12; and a networkbandwidth priority assignment 24 providing an assignment of network bandwidth thresholds defining ranges of network bandwidths to different sets of priorities that may be associated with theobjects 12. - The
secondary server 14 includes aremote cache manager 26 to retrieveobjects 12 from theprimary site 2 requested byclients 21 connected to thesecondary server 14 over thenetwork 6. Theremote cache manager 26 may provide a virtual global namespace toclients 21 forobjects 12 maintained at theprimary site 2. Thesecondary server 14 further includespriority association information 28 associating priorities with object attributes for theremote cache manager 26 to use to assign priorities to cachedobjects 12′ in theremote cache 18 and cachedobject priority information 30 indicating the determined priorities ofcached objects 12′ in theremote cache 18. - The
servers clients 21. Theclients 21 may comprise a desktop computer, server, host, portable computing device, such as a smart phone, tablet computing device, telephony device, laptop computer, portable device capable of being mounted in an automobile, etc. - The
storages network 8 may comprise a local area network (LAN), storage area network (SAN), wide area network (WAN), a wireless network, the Internet, etc. Thenetwork 8 may include wireless network routers and may be part of a cloud computing model. -
FIG. 2 illustrates an embodiment of an object information entry 40 maintained in theprimary server 8object information 23, having an object identifier (ID) 42 of anobject 12; a priority 44 of the object as determined at asecondary site 4 having access to the object 42 as acached object 12′; one or more secondary servers 46 having non-exclusive read access to the modified object 42; and a secondary server 48 having exclusive write access to the object 42. In certain embodiments, only onesecondary server 14 at onesecondary site 4 may have exclusive write access to modify anobject 12. -
FIG. 3 illustrates an embodiment of a remote cache queue entry 50 maintained in theremote cache queue 22 having an object identifier (ID) 52 of a modifiedobject 12; a priority 54 of the object as determined at asecondary site 4 having access to the object 52 as acached object 12′; and a transfer size 56 of that portion or all of the object 52 to transfer. The transfer size 56 may comprise the size of the modified portion if only the modifications are transmitted tosecondary sites 4 caching the object or may comprise the entire object size if the whole object including modifications is transferred. -
FIG. 4 illustrates an embodiment of the networkbandwidth priority assignment 24 as including a plurality of network bandwidth threshold/priority set pairs 60 a/62 a, 60 b/62 b . . . 60 n/62 n, where each priority set has one or more priority values of objects to transfer. The network bandwidth thresholds 60 a, 60 b . . . 60 n, which may go from high to low network bandwidth thresholds, are used to determine which object priorities to transfer over thenetwork 6 based on measured network bandwidth. For instance, if measured network bandwidth exceeds the high first network bandwidth threshold (1) 60 a, then any objects having priorities in the first priority set (1) 62 a may be transferred, which may comprise all priorities. If measured network bandwidth is below the lowest network bandwidth threshold (n) 60 n, then there may be no objects transferred because the measured network bandwidth threshold falls below a lower bound. The lowest priority set (n) indicates a priority set to use when the measured network bandwidth is between the lowest network bandwidth threshold (n) and the next to lowest threshold (n-1). If the measured network bandwidth is between any two consecutive thresholds 60 a, 60 b . . . 60 n, then the priority set of priorities for objects to transfer is the priority set 62 a, 62 b . . . 62 n associated with the lower bandwidth threshold 60 b . . . 60 n of the two consecutive network bandwidth thresholds defining a range including the measured network bandwidth. For instance, if the measured network bandwidth is between the first network bandwidth threshold (1) and the second network bandwidth threshold (2), then objects having priorities indicated in the second priority set (2) are transferred. As the network bandwidth thresholds decrease, the number of priorities in the priority sets 62 a, 62 b . . . 62 n may decrease to delay transfer of modifications for lower priority objects to limit transmissions to higher priority objects during lower network bandwidth periods. -
FIG. 5 illustrates an embodiment of an instance 70 of the cachedobject priority information 30 for cached objects at thesecondary site 4 as including an object ID 72 and a priority 74 assigned to the object by thesecondary server 14 based on user access to the cachedobject 12′ at thesecondary site 4. -
FIG. 6 illustrates anembodiment 80 ofpriority association information 28 used by thesecondary server 14 to determine a priority to assign to cachedobjects 12′ based on user access frequency forcached objects 12′.Access frequency thresholds objects 12′ based on user access frequency. For instance, if the measured user access frequency for acached object 12′ exceeds the high first access frequency threshold (1) 82 a, then the assigned priority for that cachedobject 12′ is the highest first priority (1) 84 a. The lowestaccess frequency threshold 82 n for the cachedobject 12′ may comprise the lowest possible value, so the assigned priority for that cachedobject 12 is the lowest possible priority (n) 84 n. If the measured user access frequency for the cachedobject 12′ is between any two consecutive useraccess frequency thresholds object 12′ is thepriority frequency access threshold 82 b . . . 82 n of the two consecutive access frequency thresholds bounding the measured user access frequency for the cachedobject 12. For instance, if the measured user access frequency for the cachedobject 12′ is between the first access frequency threshold (1) 82 a and the second access frequency threshold (2) 82 b, then the second priority (2) 84 b is assigned to the cachedobject 12′. As the access frequency thresholds decrease, the assigned priority becomes smaller because less frequently accessed objects are deemed to have lower need and priority. -
FIG. 7 illustrates anembodiment 90 ofpriority association information 28 used by thesecondary server 14 to determine a priority to assign to cachedobjects 12′ based on a customer support level of a customer that has accessed the cachedobject 12′. For each possiblecustomer support level corresponding priority customer support level object 12′ to cause it to be cached, the most recent accessing customers, or some calculated customer support level based on the support level of the last accessing customers. In this way, cachedobjects 12′ being accessed at thesecondary site 4 by customers having or paying for a higher support level are assigned a higher priority by thesecondary server 14. -
FIG. 8 illustrates an embodiment of anentry 100 in thepriority association information 28 used by thesecondary server 14 to determine a priority to assign to cachedobjects 12′ based on an event occurring in an environment external to thesecondary server 14, such as an event in the real world, a virtual world, political world, natural environment, financial world, etc., that would result in increased or decreased demand for acached object 12′. The event based priority association includes a plurality ofentries 100, one for each different possible event. Each event basedentry 100 includes anevent description 102 identifying the event, effectedobjects 104 whose access at thesecondary site 4 is likely to be effected by theevent 102 in a predictable manner, and apriority 106 to assign to the effectedobjects 104 due to the event. For instance, if an event is likely to lead to high demand for an object, such as a sudden financial market move that will likely lead to changed access patters of financial information related objects, then the priority for that object will be increased due to the event. Certain events may cause the priority for effected objects to be lowered if the event will predictably lead to less access of an object. -
FIG. 9 illustrates an embodiment of anentry 90 in thepriority association information 28 used by thesecondary server 14 to determine a priority to assign to cachedobjects 12′ based on determined content type or attributes of the cached objects 12. The content/attributes based priority association information includes a plurality of entries 110, one for each content type/attribute that is to be associated with a priority. Each entry 110 identifies a content type/attribute 112 and associatedpriority 114, so thatcached objects 12′ determined to have the content type/attribute 112 of an entry 110 are assigned the associatedpriority 114. -
FIG. 10 illustrates an embodiment of operations performed by thenetwork cache manager 20 upon receiving a request for an object from thesecondary server 14 at thesecondary site 4. Upon receiving (at block 130) a request for an object, thenetwork cache manager 20 updates (at block 132) the object information entry 40 (FIG. 2 ) for the object to indicate thesecondary server 14 requesting read or write access by indicating thesecondary server 14 identifier in fields 46 or 48. If (at block 134) access is granted, then thenetwork cache manager 20 transfers the requested object to the requestingsecondary server 14. -
FIG. 11 illustrates an embodiment of operations performed by thenetwork cache manager 20 to process an update or modification to an object cached in at least onesecondary site 4. Upon receiving (at block 150) the modification, thenetwork cache manager 20 applies (at block 152) the modification to theobject 12 and determines (at block 154) the priority for the modifiedobject 12, such as from priority 44 in the object information entry 40 for the object. Thenetwork cache manager 20 adds (at block 156) an entry 50 (FIG. 3 ) to theremote cache queue 22 for the modified object indicating the priority 54. If there is a preexisting entry 50 in theremote cache queue 22 for the modifiedobject 12, then that entry 50 may be updated or supplemented with the information on the new modification. The entry 50 indicates the priority 54 and a transfer size 56 of the modification or object to transfer. -
FIG. 12 illustrates an embodiment of operations performed by thenetwork cache manager 20 to process priority information for acached object 12′ received from asecondary server 14. Upon receiving (at block 170) the priority information for a cached object assigned by thesecondary server 14, thenetwork cache manager 20 updates (at block 172) the priority 44 for theobject 12 with the received priority. The update operation may overwrite the existing priority with the received priority, determine an aggregate priority based on previously received priorities for the object, etc. - The
network cache manager 20 may receive priorities for a same object cached at multiple secondary sites. Because each secondary site is calculating priorities for cached objects based on access and potential access attributes of the cached objects particular to each secondary site, thenetwork cache manager 20 may receive different priorities from differentsecondary sites 4 for thesame object 12. In such case, thenetwork cache manager 20 may have to select from or aggregate the different received priorities for oneobject 12. -
FIG. 13 illustrates an embodiment of operations performed by thenetwork cache manager 20 to transfer modifications to cached objects to thesecondary server 14 caching theobjects 12′ using theremote cache queue 22. Upon initiating (at block 190) the operation to transfer modifications, thenetwork cache manager 20 determines (at block 192) current network bandwidth conditions. The priority associated with that determined network bandwidth may be determined from the networkbandwidth priority assignment 24 to determine the priority set of one or more priorities of objects to transfer. A transfer period is started (at block 196), which may be determined by a fixed number of transfers or a time clock. Upon starting the transfer period, if (at block 198) theremote cache queue 22 is not empty, then thenetwork cache manager 20 determines (at block 202) a cached object of the determined priority(s) in theremote cache queue 22 based on the cache ordering. Theremote cache queue 22 entries may be ordered by priority so that modifications for higher priority objects are transferred first before modifications for lower priority objects. Further, thequeue 22 may select modifications within a priority based on a transfer size 56 to favor transferring smaller sized modifications/objects to maximize the number of cached objects receiving the modifications. The modifications for the determined cached object are transferred (at block 202) to the at least onesecondary server 14 caching the object, as indicated in the secondary servers fields 46 and 48 of the object information entry 40 for the object. - After selecting the modifications to transfer (at block 202), if (at block 204) the transfer period is not over, control proceeds back to block 198 to select a next modification to process. If (at block 204) the transfer period has ended, e.g., number of transfers occurred, time expired, etc., then control proceeds back to block 192 to determine the
current network 6 bandwidth. If (at block 198) theremote cache queue 22 is empty, then control proceeds to block 204 to consider whether the transfer period is over. - With the operations of
FIG. 13 , the measurednetwork 6 bandwidth and priorities assigned to the objects by thesecondary sites 4 accessing the objects are used to determine which objects theprimary server 8 transfers, based on object priority and priorities assigned to different network bandwidth ranges. -
FIG. 14 illustrates an embodiment of the operations performed by thenetwork cache manager 20 atblock 200 inFIG. 13 to determine modifications for objects identified in theremote cache queue 22 to transfer when there are three network bandwidth threshold 60 a, 60 b, 60 n/priority set 62 a, 62 b, 62 n pairs . Upon initiating (at block 220) the operations, if (at block 222) the measured network bandwidth exceeds a highest first network bandwidth threshold (1) 60 a (FIG. 4 ), then thenetwork cache manager 20 copies modifications for cached objects having priorities in the first priority set 62 a, which may comprise all priorities because measured network bandwidth is high, exceeding the highest threshold 60a. Modifications from theremote cache queue 22 may be selected based on thequeue 22 ordering, such as priority 54 then transfer size 56. If (at block 222) the measured network bandwidth is less than the first network bandwidth threshold (1) 60 a and greater (at block 226) than the second network bandwidth threshold (2) 60 b, then thenetwork cache manager 20 copies (at block 228) modifications for cached objects having priorities in the second priority set 62 b, which may comprise priorities except one or more lower priorities, and queues (at block 230) in theremote cache queue 22 modifications for cached objects having priorities not in the second set 62 b. This delays the transfer of modifications for certain lower priority objects while network bandwidth is below the high threshold. If (at block 226) the measured network bandwidth is less than the second network bandwidth threshold (2) 60 b and greater (at block 232) than a third network bandwidth threshold (3), then thenetwork cache manager 20 copies (at block 234) modifications for cached objects having priorities in the third priority set 62 n, according to theremote cache queue 22 ordering. Modifications forcached objects 12 having priorities not in the third priority set 62 n remain queued (at block 236) in theremote cache queue 22. If (at block 232) the measured network bandwidth is below a lowest possible level, then control may end without transferring any objects. With the operations ofFIG. 14 , additional thresholds and priority sets may be considered to determine the priorities of objects to transfer for additional ranges defined by further network bandwidth thresholds. -
FIG. 15 illustrates an embodiment of operations performed by theremote cache manager 26 at thesecondary server 14 to determine the priority ofcached objects 12 based on attributes of the cachedobjects 12 at thesecondary site 4. Upon initiating (at block 250) the operation to determine the priority ofcached objects 12′, theremote cache manager 26 determines (at block 252) attributes of the cachedobjects 12′ and determines (at block 254) from thepriority association information 28 the priorities for the cached objects corresponding to the determined attributes. Theremote cache manager 26 transmits (at block 256) to theprimary server 8 the determined priorities for theobjects 12′ cached at thesecondary site 4 for theprimary server 8 to use to control an order of how modifications are copied to the secondary sites. - In one embodiment, the
secondary server 14 transmits the priority information forcached objects 12′ directly to theprimary server 24. In a further embodiment, thesecondary server 14 may transmit the determined priority to anothersecondary site 4, so that this intermediarysecondary site 4 writes the data and transmits the priority to theprimary server 8. -
FIG. 16 illustrates an embodiment of operations performed by theremote cache manager 26 to determine priority information based on user access frequency at thesecondary site 4 for acached object 12′. Upon initiating (at block 270) the operation to determine priority, theremote cache manager 26 determines (at block 272) an object access frequency based on user access of the cached object at the secondary site. The determined object access frequency is compared (at block 274) to at least one of the access frequency thresholds 62 a, 62 b . . . 62 n (FIG. 6 ). A determination is made (at block 276) of the priority associated with the determined at least one user access frequency threshold. For instance, if the user access frequency is greater than the highest threshold, then the highest priority is assigned, if the user access frequency is between two consecutive thresholds, then the priority for that threshold range is used. The determined priority for the cachedobject 12′ is indicated (at block 278) in the cachedobject priority information 30 and transmitted to theprimary server 8 to use to control transmissions of modifications to cached objects. -
FIG. 17 illustrates an embodiment of operations performed by theremote cache manager 26 based on customer support level of users accessing the cachedobject 12′ at thesecondary site 4. Upon initiating (at block 300) the operation to determine priority based on customer support levels of the requesting user that accessed the cached object, theremote cache manager 26 determines (at block 302) a requesting user that accessed the cachedobject 12′ at thesecondary site 4. A determination is made (at block 304) of the customer support level of the requesting user. Theremote cache manager 26 determines (at block 306) from the customer support levelpriority association information 90 the priority associated with the customer support level for the requesting user. The determined priority is indicated (at block 308) for the cachedobject 12′ in the cachedobject priority information 30 and transmitted to theprimary server 8. The customer support level may be considered for a most recent requesting user, the requesting user that first accessed the cachedobject 12′ to cause the caching or a customer support level of a plurality of requesting users to provide an aggregate priority. -
FIG. 18 illustrates an embodiment of operations performed by theremote cache manager 26 to determine priority ofcached objects 12′ based on occurrence of external events that are predicted to effect access to the cachedobjects 12′. Upon initiating (at block 330) an operation to determine event based priority, theremote cache manager 20 detects (at block 332) an event occurring in an environment external to the operations of thesecondary server 14 that is likely to result in increased access to a cachedobject 12′ and that corresponds to anevent description 102 indicated in the event priority information 100 (FIG. 8 ). This event information may be transmitted to thesecondary server 14 or pulled by thesecondary server 14 from a remote location, such as a web site. Theremote cache manager 26 determines (at block 334) from the event basedpriority information 100 thepriority 106 associated with theexternal event description 102 indicated in oneentry 100 corresponding to the detected event. The determined priority is indicated (at block 336) for the cachedobject 12′ in the cachedobject priority information 30 and transmitted to theprimary server 8. In this way the occurrence of an external event that is predicted to effect access to an object, increase or decrease, is used to alter the priority for the object. -
FIG. 19 illustrates an embodiment of operations performed by theremote cache manager 26 to determine priority ofcached objects 12′ based on the content type of the cachedobjects 12′. Upon initiating (at block 350) content type based priority determination, theremote cache manager 20 processes (at block 352) content of the cachedobject 12′ to determine at least one content type associated with the cached object content. A determination is made (at block 354) of at least one of the priorities associated with the determined at least one content type, such as thepriority 114 associated with thedetermined content type 112 indicated in an entry 110 of the content type priority association information. The determined priority is indicated (at block 358) for the cachedobject 12′ in the cachedobject priority information 30 and transmitted to theprimary server 8. - In certain embodiments, one or more of the different priority determinations may be used to determine by determining a combined or aggregate priority by executing one or more of the user access frequency priority determination (
FIG. 16 ), customer service level priority determination (FIG. 17 ), event based priority determination (FIG. 18 ), and content type priority determination (FIG. 19 ). Different determined priorities may then be aggregated or combined. - Described embodiments provide techniques to have a secondary server at a secondary site determine priority for cached objects based on measured or anticipated access to cached objects based on factors such as user access at the secondary site, customer support levels of customers accessing at the secondary site, content type, events, etc. This secondary site determined priority may be sent to the primary site to use to determine an ordering for transmitting modifications for cached objects based on network bandwidth measurements to favor the transfer of higher priority objects during periods of limited network bandwidth.
- The computing environment of
FIG. 1 may be part of a cloud computing model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. The cloud computing environment may provide cloud based remote caching of objects from a primary site to a plurality of secondary sites. - The cloud computing implementation is further described with respect to
FIGS. 1-19 . This cloud model may include at least five characteristics, at least three service models, and at least four deployment models. - Characteristics are as follows:
- On-demand self-service: a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider.
- Broad network access: capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick source platforms (e.g., mobile phones, laptops, and PDAs).
- Resource pooling: the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter).
- Rapid elasticity: capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
- Measured service: cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.
- Service Models are as follows:
- Software as a Service (SaaS): the capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various source devices through a thin source interface such as a web browser (e.g., web-based e-mail). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
- Platform as a Service (PaaS): the capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.
- Infrastructure as a Service (IaaS): the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
- Deployment Models are as Follows:
- Private cloud: the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises.
- Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises.
- Public cloud: the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
- Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).
- A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.
-
FIG. 20 illustrates an embodiment of a cloud computing node orcomputer 402 which may comprise an implementation of theservers clients 21.Computer 402 is only one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless,cloud computing node 402 is capable of being implemented and/or performing any of the functionality set forth hereinabove. - The
cloud computing computer 402 is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 402 include, but are not limited to, personal computer systems, server computer systems, thin sources, thick sources, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like. - Computer system/
server 402 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server 402 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices. - As shown in
FIG. 20 , computer system/server (cloud node) 402 is shown in the form of a general-purpose computing device. The components of computer system/server 402 may include, but are not limited to, one or more processors orprocessing units 404, asystem memory 406, and abus 408 that couples various system components includingsystem memory 406 toprocessor 404. -
Bus 408 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus. - Computer system/
server 402 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 402, and it includes both volatile and non-volatile media, removable and non-removable media. -
System memory 406 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 410 and/orcache memory 412. Computer system/server 402 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only,storage system 413 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected tobus 408 by one or more data media interfaces. As will be further depicted and described below,memory 406 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention. - Program/
utility 414, having a set (at least one) ofprogram modules 416, may be stored inmemory 406 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.Program modules 416 generally carry out the functions and/or methodologies of embodiments of the invention as described herein. - Computer system/
server 402 may also communicate with one or moreexternal devices 418 such as a keyboard, a pointing device, adisplay 420, etc.; one or more devices that enable a user to interact with computer system/server 12; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 402 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 422. Still yet, computer system/server 402 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) vianetwork adapter 424. As depicted,network adapter 424 communicates with the other components of computer system/server 402 viabus 408. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 402. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc. -
FIG. 21 illustrates an embodiment of acloud computing environment 450. As shown,cloud computing environment 450 comprises one or more cloud computing nodes 402with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA) orcellular telephone 454A,desktop computer 454B,laptop computer 454C, and/orautomobile computer system 454N may communicate.Nodes 402 may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as Private, Community, Public, or Hybrid clouds as described hereinabove, or a combination thereof. This allowscloud computing environment 450 to offer infrastructure, platforms and/or software as services for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that the types ofcomputing devices 454A-N shown inFIG. 21 are intended to be illustrative only and thatcomputing nodes 402 andcloud computing environment 450 can communicate with any type of computerized device over any type of network and/or network addressable connection (e.g., using a web browser). -
FIG. 22 provides an embodiment a set of functional abstraction layers provided bycloud computing environment 450. It should be understood in advance that the components, layers, and functions shown inFIG. 22 re intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided: - Hardware and
software layer 460 includes hardware and software components. Examples of hardware components include mainframes, in one example IBM® zSeries® systems; RISC (Reduced Instruction Set Computer) architecture based servers, in one example IBM pSeries® systems; IBM xSeries® systems; IBM BladeCenter® systems; storage devices; networks and networking components. Examples of software components include network application server software, in one example IBM WebSphere® application server software; and database software, in one example IBM DB2® database software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, and DB2 are trademarks of International Business Machines Corporation registered in many jurisdictions worldwide). -
Virtualization layer 462 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual sources. - In one example,
management layer 464 may provide the functions described below. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA. -
Workloads layer 466 provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions may provide multi-tenancy for a cloud computing environment such as described with respect toFIGS. 1-19 , above. - The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. Accordingly, aspects of the embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the embodiments may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- Aspects of the present invention are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The terms “an embodiment”, “embodiment”, “embodiments”, “the embodiment”, “the embodiments”, “one or more embodiments”, “some embodiments”, and “one embodiment” mean “one or more (but not all) embodiments of the present invention(s)” unless expressly specified otherwise.
- The terms “including”, “comprising”, “having” and variations thereof mean “including but not limited to”, unless expressly specified otherwise.
- The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise.
- The terms “a”, “an” and “the” mean “one or more”, unless expressly specified otherwise.
- Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.
- A description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments of the present invention.
- Further, although process steps, method steps, algorithms or the like may be described in a sequential order, such processes, methods and algorithms may be configured to work in alternate orders. In other words, any sequence or order of steps that may be described does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order practical. Further, some steps may be performed simultaneously.
- When a single device or article is described herein, it will be readily apparent that more than one device/article (whether or not they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether or not they cooperate), it will be readily apparent that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the present invention need not include the device itself.
- The illustrated operations of the figures show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, steps may be added to the above described logic and still conform to the described embodiments. 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 foregoing description of various embodiments 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 herein after appended.
Claims (13)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/472,397 US8832218B2 (en) | 2012-03-26 | 2012-05-15 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/430,466 US8918474B2 (en) | 2012-03-26 | 2012-03-26 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
US13/472,397 US8832218B2 (en) | 2012-03-26 | 2012-05-15 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/430,466 Continuation US8918474B2 (en) | 2012-03-26 | 2012-03-26 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130254320A1 true US20130254320A1 (en) | 2013-09-26 |
US8832218B2 US8832218B2 (en) | 2014-09-09 |
Family
ID=49112398
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/430,466 Active 2032-10-25 US8918474B2 (en) | 2012-03-26 | 2012-03-26 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
US13/472,397 Expired - Fee Related US8832218B2 (en) | 2012-03-26 | 2012-05-15 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/430,466 Active 2032-10-25 US8918474B2 (en) | 2012-03-26 | 2012-03-26 | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
Country Status (3)
Country | Link |
---|---|
US (2) | US8918474B2 (en) |
CN (1) | CN103368867B (en) |
DE (1) | DE102013204186B4 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150039359A1 (en) * | 2013-08-01 | 2015-02-05 | Santosh Katakol | Component Based Mobile Architecture with Intelligent Business Services to Build Extensible Supply Chain Ready Procurement Platforms |
US20180089880A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Transmission of avatar data |
US10607386B2 (en) | 2016-06-12 | 2020-03-31 | Apple Inc. | Customized avatars and associated framework |
US10666920B2 (en) | 2009-09-09 | 2020-05-26 | Apple Inc. | Audio alteration techniques |
US10861210B2 (en) | 2017-05-16 | 2020-12-08 | Apple Inc. | Techniques for providing audio and video effects |
US11223547B1 (en) * | 2013-01-07 | 2022-01-11 | Workspot, Inc. | Managing information technology infrastructure based on user experience |
CN115842789A (en) * | 2023-02-23 | 2023-03-24 | 鹏城实验室 | Data packet scheduling method and device and readable storage medium |
JP7450726B2 (en) | 2019-12-27 | 2024-03-15 | ヒタチ ヴァンタラ エルエルシー | Hybrid cloud asynchronous data synchronization |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9503731B2 (en) * | 2012-10-18 | 2016-11-22 | Nec Corporation | Camera system |
US9710976B2 (en) * | 2014-06-03 | 2017-07-18 | Hyundai Motor Company | System and method for transmitting data of a vehicle |
US9921750B2 (en) | 2014-11-20 | 2018-03-20 | Samsung Electronics Co., Ltd. | Solid state drive (SSD) memory cache occupancy prediction |
CN105302497B (en) * | 2015-11-24 | 2019-09-24 | 浪潮(北京)电子信息产业有限公司 | A kind of buffer memory management method and system |
US11494304B2 (en) * | 2020-03-13 | 2022-11-08 | International Business Machines Corporation | Indicating extents of tracks in mirroring queues based on information gathered on tracks in extents in cache |
US11425196B1 (en) * | 2021-11-18 | 2022-08-23 | International Business Machines Corporation | Prioritizing data replication packets in cloud environment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089700A1 (en) * | 2010-10-10 | 2012-04-12 | Contendo, Inc. | Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601107B1 (en) * | 1998-02-02 | 2003-07-29 | Hughes Electronics Corporation | Adaptive fuzzy control of data acquisition and broadcasting |
US7054927B2 (en) | 2001-01-29 | 2006-05-30 | Adaptec, Inc. | File system metadata describing server directory information |
US7240135B2 (en) | 2004-03-05 | 2007-07-03 | International Business Machines Corporation | Method of balancing work load with prioritized tasks across a multitude of communication ports |
US7716660B2 (en) * | 2004-12-14 | 2010-05-11 | Microsoft Corporation | Method and system for downloading updates |
JP2006350404A (en) | 2005-06-13 | 2006-12-28 | Hitachi Ltd | Priority control method, computer system, and management device |
US7437510B2 (en) * | 2005-09-30 | 2008-10-14 | Intel Corporation | Instruction-assisted cache management for efficient use of cache and memory |
US8131689B2 (en) | 2005-09-30 | 2012-03-06 | Panagiotis Tsirigotis | Accumulating access frequency and file attributes for supporting policy based storage management |
US7444478B2 (en) * | 2005-11-18 | 2008-10-28 | International Business Machines Corporation | Priority scheme for transmitting blocks of data |
CN100426260C (en) * | 2005-12-23 | 2008-10-15 | 中国科学院计算技术研究所 | Fetching method and system for multiple line distance processor using path predicting technology |
CN101682621B (en) * | 2007-03-12 | 2014-07-09 | 思杰系统有限公司 | Systems and methods for cache operations |
US8234327B2 (en) | 2007-03-30 | 2012-07-31 | Netapp, Inc. | System and method for bandwidth optimization in a network storage environment |
US7864676B2 (en) | 2008-07-14 | 2011-01-04 | The Mitre Corporation | Network cross-domain precedence and service quality conflict mitigation |
US8694578B2 (en) * | 2009-05-29 | 2014-04-08 | Microsoft Corporation | Swarm-based synchronization over a network of object stores |
-
2012
- 2012-03-26 US US13/430,466 patent/US8918474B2/en active Active
- 2012-05-15 US US13/472,397 patent/US8832218B2/en not_active Expired - Fee Related
-
2013
- 2013-03-12 DE DE102013204186.1A patent/DE102013204186B4/en active Active
- 2013-03-26 CN CN201310098314.5A patent/CN103368867B/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089700A1 (en) * | 2010-10-10 | 2012-04-12 | Contendo, Inc. | Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10666920B2 (en) | 2009-09-09 | 2020-05-26 | Apple Inc. | Audio alteration techniques |
US11223547B1 (en) * | 2013-01-07 | 2022-01-11 | Workspot, Inc. | Managing information technology infrastructure based on user experience |
US11824750B2 (en) | 2013-01-07 | 2023-11-21 | Workspot, Inc. | Managing information technology infrastructure based on user experience |
US20150039359A1 (en) * | 2013-08-01 | 2015-02-05 | Santosh Katakol | Component Based Mobile Architecture with Intelligent Business Services to Build Extensible Supply Chain Ready Procurement Platforms |
US10607386B2 (en) | 2016-06-12 | 2020-03-31 | Apple Inc. | Customized avatars and associated framework |
US11276217B1 (en) | 2016-06-12 | 2022-03-15 | Apple Inc. | Customized avatars and associated framework |
US20180089880A1 (en) * | 2016-09-23 | 2018-03-29 | Apple Inc. | Transmission of avatar data |
US10861210B2 (en) | 2017-05-16 | 2020-12-08 | Apple Inc. | Techniques for providing audio and video effects |
JP7450726B2 (en) | 2019-12-27 | 2024-03-15 | ヒタチ ヴァンタラ エルエルシー | Hybrid cloud asynchronous data synchronization |
CN115842789A (en) * | 2023-02-23 | 2023-03-24 | 鹏城实验室 | Data packet scheduling method and device and readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
US8832218B2 (en) | 2014-09-09 |
CN103368867A (en) | 2013-10-23 |
US8918474B2 (en) | 2014-12-23 |
DE102013204186B4 (en) | 2020-09-03 |
CN103368867B (en) | 2017-07-21 |
US20130254323A1 (en) | 2013-09-26 |
DE102013204186A1 (en) | 2013-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8832218B2 (en) | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth | |
US11431651B2 (en) | Dynamic allocation of workload deployment units across a plurality of clouds | |
US8874532B2 (en) | Managing dereferenced chunks in a deduplication system | |
US9110603B2 (en) | Identifying modified chunks in a data set for storage | |
US9569236B2 (en) | Optimization of virtual machine sizing and consolidation | |
US9727578B2 (en) | Coordinated access to a file system's shared storage using dynamic creation of file access layout | |
US9998531B2 (en) | Computer-based, balanced provisioning and optimization of data transfer resources for products and services | |
US8838529B2 (en) | Applying replication rules to determine whether to replicate objects | |
US11861405B2 (en) | Multi-cluster container orchestration | |
US11762850B2 (en) | Content-aware node selection for container creation | |
US20120323821A1 (en) | Methods for billing for data storage in a tiered data storage system | |
US9716666B2 (en) | Process cage providing attraction to distributed storage | |
US20180020050A1 (en) | Replication optimization for object storage environments | |
US20130219230A1 (en) | Data center job scheduling | |
US20230055511A1 (en) | Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment | |
JP7431490B2 (en) | Data migration in hierarchical storage management systems | |
US11513861B2 (en) | Queue management in solid state memory | |
US20200348882A1 (en) | Caching file data within a clustered computing system | |
US9229641B2 (en) | Identifying redundant data for disk image streaming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHALERAO, UMESH;ISLAM, SHAH MOHAMMAD R.;KOTHIYA, RINKU M.;AND OTHERS;SIGNING DATES FROM 20120307 TO 20120326;REEL/FRAME:033242/0437 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.) |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
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: 20180909 |