Claims
- 1. A method of placing data objects in a plurality of distributed caches, comprising:
providing information regarding a plurality of data objects; determining at least one bandwidth-constrained placement of at least one data object; and providing at least one copy of at least one data object to at least one distributed cache based on at least one determined bandwidth-constrained placement.
- 2. The method of claim 1, wherein providing at least one copy of at least one data object to at least one distributed cache based on at least one determined bandwidth-constrained placement comprises providing two or more copies of data objects to at least one distributed cache in an order determined by at least one bandwidth-constrained placement.
- 3. The method of claim 1, wherein providing information regarding a plurality of data objects comprises providing an estimate of the size of at least one data object.
- 4. The method of claim 1, wherein providing information regarding a plurality of data objects comprises providing an estimate of the probability of receiving a request to access at least one data object.
- 5. The method of claim 1, wherein providing information regarding a plurality of data objects comprises providing a record of historical requests to access at least one data object.
- 6. The method of claim 1, wherein providing information regarding a plurality of data objects comprises providing a location of at least one data object.
- 7. The method of claim 1, wherein providing information regarding a plurality of data objects comprises providing information regarding a plurality of data objects accessible via a distributed network in communication with at least one of the caches.
- 8. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining a fill time, wherein the duration of the fill time is sufficient to allow at least one copy of at least one data object to be provided to at least one distributed cache based on available bandwidth of at least one distributed cache.
- 9. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining placeable objects from among the plurality of data objects based on the provided information.
- 10. The method of claim 1, further comprising providing topology information describing the distance between two or more of the distributed caches.
- 11. The method of claim 1, further comprising providing a hierarchical structure to describe relationships between the distributed caches.
- 12. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining a benefit of at least one data object of the plurality of data objects.
- 13. The method of claim 1, wherein information provided regarding the plurality of data objects comprises estimates of probability of access requests for one or more data objects, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining one or more data objects having the highest estimated probability of access requests for at least one distributed cache.
- 14. The method of claim 1, wherein information provided regarding the plurality of data objects comprises estimates of probability of access requests for one or more data objects and estimates of the size of one or more data objects, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining one or more data objects having the highest estimated probability of access requests for at least one distributed cache, wherein the total size of the one or more determined data objects is less than or equal a maximum amount of data that at least one cache can receive during a predetermined fill time.
- 15. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining at least one placement of at least one data object in at least one cache of the plurality of distributed caches based on an estimated size of at least one data object, available time to provide at least one data object to at least one cache, bandwidth available to provide at least one data object to at least one cache, and at least one estimate of the probability of a request to access at least one data object on at least one cache.
- 16. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining at least one primary copy of at least one data object in at least one cache of the plurality of distributed caches; and determining at least one secondary copy of at least one data object in at least one cache of the plurality of distributed caches.
- 17. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining at least two first placements of at least one data object, wherein at least two first placements are on different caches of the plurality of distributed caches; and determining at least one second placement of at least one data object based on two or more first placements of at least one data object.
- 18. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises determining at least one first placement of at least one data object; and determining at least one missing data object, wherein at least one missing data object is not present in at least one first placement.
- 19. The method of claim 18, wherein determining at least one bandwidth-constrained placement of at least one data object further comprises determining at least one value of at least one missing data object.
- 20. The method of claim 18, wherein determining at least one bandwidth-constrained placement of at least one data object further comprises determining at least one value of at least one missing data object; determining at least one benefit of at least one data object present in at least one first placement; and determining whether at least one value of at least one missing data object exceeds at least one benefit of at least one data object present in at least one first placement.
- 21. The method of claim 18, wherein at least one first placement comprises a primary copy and at least one secondary copy of at least one data object; and wherein determining at least one bandwidth-constrained placement of at least one data object further comprises:
determining at least one value of at least one missing data object; determining at least one sum of values of missing data objects; determining at least one benefit of at least one data object present in at least one first placement; and determining whether at least one value of at least one missing data object exceeds at least one benefit of at least one secondary copy of at least one data object present in at least one first placement.
- 22. The method of claim 21, further comprising replacing at least one secondary copy of at least one data object in at least one first placement with at least one missing data object, if at least one value of at least one missing data object exceeds at least one benefit of at least one secondary copy of at least one data object.
- 23. The method of claim 18, wherein at least one first placement comprises a primary copy and at least one secondary copy of at least one data object; and wherein determining at least one bandwidth-constrained placement of at least one data object further comprises:
determining at least one value of at least one missing data object; determining at least one sum of values of missing data objects; determining at least one benefit of at least one data object present in at least one first placement; and determining whether at least one value of at least one missing data object exceeds at least one reduced benefit of at least one secondary copy of at least one data object present in at least one first placement, wherein at least one reduced benefit of a secondary copy of a data object comprises a benefit of the secondary copy minus a sum of values of missing data objects.
- 24. The method of claim 23, further comprising replacing at least one secondary copy of at least one data object in at least one first placement with at least one missing data object, if at least one value of at least one missing data object exceeds at least one reduced benefit of at least one secondary copy of at least one data object.
- 25. The method of claim 1, wherein determining at least one bandwidth-constrained placement of at least one data object comprises:
providing a fill time; and determining at least one first placement based on the fill time.
- 26. The method of claim 25, further comprising:
increasing the duration of the fill time; and determining at least one second placement based on the increased fill time duration.
- 27. The method of claim 25, further comprising:
increasing the duration of the fill time; and determining at least one second placement based on the increased fill time duration; wherein providing at least one copy of at least one data object to at least one distributed cache comprises providing at least one copy of at least one data object to at least one distributed cache based on at least one additional placement.
- 28. The method of claim 25, further comprising:
increasing the duration of the fill time; determining at least one second placement based on the increased fill time duration; wherein providing at least one copy of at least one data object to at least one distributed cache comprises providing at least one copy of at least one data object to at least one distributed cache based on at least one additional placement; and continuing to increase the duration of the fill time, determine at least one additional placement based on the increased fill time duration, and provide at least one copy of at least one data object to at least one distributed cache based on at least one additional placement until a predefined event occurs.
- 29. The method of claim 25, further comprising:
increasing the duration of the fill time; determining at least one second placement based on the increased fill time duration; wherein providing at least one copy of at least one data object to at least one distributed cache comprises providing at least one copy of at least one data object to at least one distributed cache based on at least one additional placement; and continuing to increase the duration of the fill time, determine at least one additional placement based on the increased fill time duration, and provide at least one copy of at least one data object to at least one distributed cache based on at least one additional placement until at least one cache is filled.
- 30. The method of claim 25, further comprising:
increasing the duration of the fill time; determining at least one additional placement based on the increased fill time duration; providing at least one copy of at least one data object to at least one distributed cache based on at least one additional placement; and continuing to increase the duration of the fill time, determine at least one additional placement based on the increased fill time duration, and provide at least one copy of at least one data object to at least one distributed cache based on at least one additional placement until a predetermined change occurs in at least one data object.
- 31. The method of claim 25, further comprising:
increasing the duration of the fill time; determining at least one additional placement based on the increased fill time duration; providing at least one copy of at least one data object to at least one distributed cache based on at least one additional placement; and continuing to increase the duration of the fill time, determine at least one additional placement based on the increased fill time duration, and provide at least one copy of at least one data object to at least one distributed cache based on at least one additional placement until placement of data objects is complete.
- 32. The method of claim 1, wherein providing at least one copy of at least one data object to at least one distributed cache comprises sending a request to access at least one data object to a host server of at least one data object.
- 33. The method of claim 1, wherein providing at least one copy of at least one data object to at least one distributed cache comprises sending a signal comprising at least one copy of at least one data object to at least one distributed cache.
- 34. A method of placing data objects in at least one cache, comprising
providing information regarding a plurality of data objects accessible via a distributed network; determining at least one bandwidth-constrained placement of at least one data object in a plurality of cooperative caches based on the provided information; and replacing at least one data object in a cache with at least one data object not in the cache based on a bandwidth-constrained placement determination.
- 35. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining at least one first bandwidth-constrained placement of at least one data object in at least two cache memories of the cooperating cache memories; and determining at least one second bandwidth-constrained placement of at least one data object in at least one cache memory of the cooperating cache memories based on two or more determined first placements.
- 36. The method of claim 35, further comprising continuing to determine bandwidth-constrained placements of at least one data object in at least one cache memory of the cooperating cache memories until at least one bandwidth-constrained placement for each of the cooperating cache memories is determined.
- 37. The method of claim 35, wherein the plurality of cooperating cache memories comprise a hierarchy of cache memories.
- 38. The method of claim 35, wherein the plurality of cooperating cache memories comprise a hierarchy of cache memories, and wherein at least one first bandwidth-constrained placement determined comprises a placement on at least one individual cache memory.
- 39. The method of claim 35, wherein the plurality of cooperating cache memories comprise a hierarchy of cache memories, wherein at least one first bandwidth-constrained placement determined comprises a placement on at least one individual cache memory, and wherein determining at least one second bandwidth-constrained placement comprises comparing two or more first bandwidth-constrained placements of two or more individual cache memories related by the hierarchy.
- 40. The method of claim 35, wherein determining at least one first bandwidth-constrained placement of at least one data object in a cache memory comprises determining a benefit of at least one data object in the cache memory.
- 41. The method of claim 35, wherein determining at least one second bandwidth-constrained placement of at least one data object in at least one cache memory comprises determining a benefit of at least one data object in two or more cache memories.
- 42. The method of claim 35, wherein at least one second bandwidth-constrained placement comprises at least two copies of at least one data object.
- 43. The method of claim 35, wherein at least one second bandwidth-constrained placement comprises at least two copies of at least one data object, wherein the method further comprises determining a primary copy of at least one data object.
- 44. The method of claim 35, wherein at least one second bandwidth-constrained placement comprises at least two copies of at least one data object, wherein the method further comprises determining a primary copy of at least one data object, wherein determining the primary copy of at least one data object comprises determining the copy having the highest benefit among at least two copies.
- 45. The method of claim 35, wherein at least one second bandwidth-constrained placement of at least one data object comprises at least two copies of at least one data object, wherein the method further comprises determining a primary copy of at least one data object, and determining benefits of at least two copies of at least one data object based on which copy is the primary copy.
- 46. The method of claim 35, further comprising determining at least one missing data object after determining at least one first bandwidth-constrained placement, wherein at least one missing data object comprises a data object not present in at least one bandwidth-constrained placement.
- 47. The method of claim 46, further comprising:
determining a value of at least one missing data object; determining at least one benefit of at least one data object in at least one bandwidth-constrained placement; and determining whether to substitute at least one missing data object for at least one data object in at least one bandwidth-constrained placement based on the value of at least one missing data object and at least one benefit of at least one data object.
- 48. The method of claim 47, wherein determining whether to substitute at least one missing data object for at least one data object in at least one bandwidth-constrained placement based on the value of at least one missing data object and at least one benefit of at least one data object comprises:
determining a primary copy of at least one data object in at least one bandwidth-constrained placement; determining at least one secondary copy of at least one data object in at least one bandwidth-constrained placement; and determining whether the value of at least one missing data object is at least as large as the benefit of at least one secondary copy of at least one data object minus a cumulative total of values of missing data objects.
- 49. The method of claim 47, wherein determining whether to substitute at least one missing data object for at least one data object in at least one bandwidth-constrained placement comprises comparing at least one benefit of at least one data object in at least one bandwidth-constrained placement and at least one value of at least one missing data object, and if at least one value of at least one missing data object is larger than at least one benefit of at least one data object in at least one bandwidth-constrained placement then substituting at least one missing data object for at least one data object in at least one bandwidth-constrained placement.
- 50. The method of claim 35, wherein the information regarding a plurality of data objects accessible via the distributed network comprises information regarding at least one missing data object, wherein the method further comprises:
determining a value density of at least one missing data object determining at least one benefit density of at least one data object in at least one bandwidth-constrained placement; and determining whether to substitute at least one missing data object for at least one data object in at least one bandwidth-constrained placement.
- 51. The method of claim 50, wherein determining whether to substitute at least one missing data object for at least one data object in at least one bandwidth-constrained placement comprises comparing a value density of at least one missing data object and at least one benefit density of at least one data object in at least one bandwidth-constrained placement, and if the value density exceeds at least one benefit density, then substituting the missing data object corresponding to the value density for a data object corresponding to at least one benefit density.
- 52. The method of claim 35, further comprising determining placeable data objects for at least one cache memory from the plurality of data objects accessible via the distributed network, wherein a placeable data object comprises a data object transferable to a cache memory in a determined time based on available bandwidth of the cache memory.
- 53. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining at least one benefit of placing at least one data object within at least one cache memory; and determining placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit.
- 54. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining at least one benefit of at least one data object in at least two cache memories; determining a primary copy of at least one data object; determining at least one secondary copy of at least one data object; determining a value of at least one missing data object, wherein a missing data object comprises a data object that does not have a primary copy; and determining at least one bandwidth-constrained placement, wherein determining at least one bandwidth-constrained placement comprises:
determining whether to replace at least one primary copy of at least one data object with at least one missing data object; and determining whether to replace at least one secondary copy of at least one data object with at least one missing data object.
- 55. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; providing a fill time; determining a placement of data objects within the plurality of cooperating cache memories based on the fill time; providing at least one copy of at least one data object to at least one cache memory based on the determined placement; increasing the duration of the fill time; and continuing to determine placements of data objects, to provide at least one copy of at least one data object to at least one cache memory, and to increase the duration of the fill time until the occurrence of a predefined event.
- 56. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories, and wherein the plurality of cooperating cache memories comprise at least one copy of at least one data object accessible via the distributed network; determining at least one bandwidth-constrained placement of data objects in at least one cache memory, wherein at least one bandwidth-constrained placement of data objects includes at least one copy of at least one data object already present in at least one cache memory; determining at least one missing data object, wherein a missing data object comprises a data object that is not in at least one bandwidth-constrained placement of data objects; and determining whether to replace at least one data object in at least one bandwidth-constrained placement with at least one missing data object, wherein at least one copy of at least one data object already present in at least one cache memory is inhibited from being replaced.
- 57. A method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining at least one benefit density of at least one data object; and determining at least one bandwidth-constrained placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit density.
- 58. A system for distributing copies of data objects to one or more cache memories, comprising:
at least two cooperating cache memories; and at least one processor configured to determine at least one bandwidth-constrained placement of at least one data object on at least one cache memory based on information regarding at least one data object.
- 59. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of placing data objects in a plurality of distributed caches, comprising:
determining at least one bandwidth-constrained placement of at least one data object based on information provided regarding a plurality of data objects; and providing at least one copy of at least one data object to at least one distributed cache based on at least one determined bandwidth-constrained placement.
- 60. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of placing data objects in at least one cache, comprising:
determining at least one bandwidth-constrained placement of at least one data object in a plurality of cooperative caches based on information provided regarding a plurality of data objects accessible via a distributed network; and replacing at least one data object in a cache with at least one data object not in the cache based on a bandwidth-constrained placement determination.
- 61. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
determining at least one first bandwidth-constrained placement of at least one data object in at least two cache memories of a plurality of cooperating cache memories based on information provided regarding a plurality of data objects accessible via a distributed network; and determining at least one second bandwidth-constrained placement of at least one data object in at least one cache memory of the cooperating cache memories based on two or more determined first placements.
- 62. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
determining at least one benefit of placing at least one data object within at least one cache memory based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; and determining placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit.
- 63. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
determining at least one benefit of at least one data object in at least two cache memories based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining a primary copy of at least one data object; determining at least one secondary copy of at least one data object; determining a value of at least one missing data object, wherein a missing data object comprises a data object that does not have a primary copy; and determining at least one bandwidth-constrained placement, wherein determining at least one bandwidth-constrained placement comprises:
determining whether to replace at least one primary copy of at least one data object with at least one missing data object; and determining whether to replace at least one secondary copy of at least one data object with at least one missing data object.
- 64. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
determining a placement of data objects within a plurality of cooperating cache memories based on information provided regarding a plurality of data objects accessible via a distributed network, and a provided fill time; providing at least one copy of at least one data object to at least one cache memory based on the determined placement; increasing the duration of the fill time; and continuing to determine placements of data objects, to provide at least one copy of at least one data object to at least one cache memory, and to increase the duration of the fill time until the occurrence of a predefined event.
- 65. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories, and wherein the plurality of cooperating cache memories comprise at least one copy of at least one data object accessible via the distributed network; determining at least one bandwidth-constrained placement of data objects in at least one cache memory based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories, wherein at least one bandwidth-constrained placement of data objects includes at least one copy of at least one data object already present in at least one cache memory; determining at least one missing data object, wherein a missing data object comprises a data object that is not in at least one bandwidth-constrained placement of data objects; and determining whether to replace at least one data object in at least one bandwidth-constrained placement with at least one missing data object, wherein at least one copy of at least one data object already present in at least one cache memory is inhibited from being replaced.
- 66. A carrier medium comprising program instructions, wherein the program instructions are computer-executable to implement a method of determining at least one placement of at least one data object within a distributed network, comprising:
determining at least one benefit density of at least one data object based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; and determining at least one bandwidth-constrained placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit density.
- 67. A carrier medium comprising data objects selected by a method comprising:
determining at least one bandwidth-constrained placement of a plurality of data objects based on information provided regarding a plurality of data objects; and providing copies of a plurality of data objects to at least one cache based on at least one determined bandwidth-constrained placement.
- 68. The carrier medium of claim 67, wherein at least one determined bandwidth-constrained placement comprises an order in which to provide copies of data objects.
- 69. A carrier medium comprising data objects selected by a method comprising:
determining at least one first bandwidth-constrained placement of at least one data object in at least two cache memories of a plurality of cooperating cache memories based on information provided regarding a plurality of data objects accessible via a distributed network; determining at least one second bandwidth-constrained placement of at least one data object in at least one cache memory of the cooperating cache memories based on two or more determined first placements; and selecting data objects based on at least one second bandwidth-constrained placement.
- 70. A carrier medium comprising data objects selected by a method comprising:
determining at least one benefit of placing at least one data object within at least one cache memory based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; and determining placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit; and selecting data objects based on the determined placement.
- 71. A carrier medium comprising data objects selected by a method comprising:
determining at least one benefit of at least one data object in at least two cache memories based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining a primary copy of at least one data object; determining at least one secondary copy of at least one data object; determining a value of at least one missing data object, wherein a missing data object comprises a data object that does not have a primary copy; determining at least one bandwidth-constrained placement, wherein determining at least one bandwidth-constrained placement comprises:
determining whether to replace at least one primary copy of at least one data object with at least one missing data object; and determining whether to replace at least one secondary copy of at least one data object with at least one missing data object; and selecting data objects based on at least one determined bandwidth-constrained placement.
- 72. A carrier medium comprising data objects selected by a method comprising:
providing information regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories, and wherein the plurality of cooperating cache memories comprise at least one copy of at least one data object accessible via the distributed network; determining at least one bandwidth-constrained placement of data objects in at least one cache memory based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories, wherein at least one bandwidth-constrained placement of data objects includes at least one copy of at least one data object already present in at least one cache memory; determining at least one missing data object, wherein a missing data object comprises a data object that is not in at least one bandwidth-constrained placement of data objects; determining whether to replace at least one data object in at least one bandwidth-constrained placement with at least one missing data object, wherein at least one copy of at least one data object already present in at least one cache memory is inhibited from being replaced; and selecting data objects based on at least one determined bandwidth-constrained placement.
- 73. A carrier medium comprising data objects selected by a method comprising:
determining at least one benefit density of at least one data object based on information provided regarding a plurality of data objects accessible via a distributed network, wherein the distributed network comprises a plurality of cooperating cache memories; determining at least one bandwidth-constrained placement of data objects within the plurality of cooperating cache memories based on at least one determined benefit density; and selecting data objects based on at least one determined bandwidth-constrained placement.
PRIORITY CLAIM
[0001] This application claims the benefit of the U.S. Provisional Patent Application serial No. 60/282,039 entitled “A METHOD FOR NEAR-OPTIMAL BANDWIDTH-CONSTRAINED PLACEMENT IN A WIDE-AREA NETWORK,” to Dahlin, et al. and filed Apr. 6, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60282039 |
Apr 2001 |
US |