DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This action is responsive to communication received on 09/09/2024. Claims 19-37 are pending as new and claims 1-18 are cancelled by preliminary amendment.
The Examiner recommends filing a written authorization for Internet communication in response to the present action. Doing so permits the USPTO to communicate with Applicant using Internet email to schedule interviews or discuss other aspects of the application. Without a written authorization in place, the USPTO cannot respond to Internet correspondence received from Applicant. The preferred method of providing authorization is by filing form PTO/SB/439, available at: https://www.uspto.gov/patent/forms/forms. See MPEP § 502.03 for other methods of providing written authorization.
Double Patenting
6. The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/process/file/efs/guidance/eTD-info-I.jsp.
Claims 19-37 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-20 of U.S. Patent No 10,880,395. Although the claims at issue are not identical, they are not patentably distinct from each other because claims of the instant application are anticipated by the claims US 10,880,395. Claims 1-20 recite claims with a broader set of limitation than the claims US 10,880,395. See table below.
18/824,604
US 10,880,395
19. A method for operating a telecommunications network comprising: determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve;
determining a percentage of storage capacity at a cache node of a content delivery network (CDN); scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value;
and caching the particular resource in the cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value.
1. A method for operating a telecommunications network comprising: determining a percentage of storage capacity at a cache node of a content delivery network (CDN); determining lifetime available writes for the cache node, wherein lifetime available writes comprises a total amount of data that can be written to the cache node before the cache node must be replaced; scaling a resource caching popularity threshold value based on both the determined percentage of storage capacity at the cache node and cache pressure for the cache node, wherein scaling the resource caching popularity threshold value comprises
8. The method of claim 1 further comprising: applying the request for the particular resource available from the CDN to a statistical sampling filter; and generating the resource popularity counter for the particular resource if the request succeeds the statistical sampling filter.
determining a threshold popularity above which a particular resource will be cached at the cache node, and wherein cache pressure for the cache node is a function of a ratio between total writes to the cache node and the lifetime available writes to the cache node; receiving, at the cache node, a request for the particular resource available from the CDN;
comparing a resource popularity counter associated with the particular resource to the scaled resource caching popularity threshold value, wherein the resource popularity counter indicates a number of requests received for the particular resource; and caching the particular resource in a cache node storage system when the resource popularity counter exceeds the scaled resource caching threshold value.
Claims 19-37 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-18 of U.S. Patent No 11,665,259. Although the claims at issue are not identical, they are not patentably distinct from each other because claims of the instant application are anticipated by the claims US 11,665,259. Claims 1-18 recite claims with a broader set of limitation than the claims US 11,665,259. See table below.
18/824,604
US 11,665,259
19. A method for operating a telecommunications network comprising: determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve;
determining a percentage of storage capacity at a cache node of a content delivery network (CDN); scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value;
and caching the particular resource in the cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value.
1. A method for operating a telecommunications network comprising: determining a percentage of storage capacity at a cache node of a content delivery network (CDN); determining lifetime available writes for the cache node, wherein lifetime available writes comprises a total amount of data that can be written to the cache node before the cache node must be replaced; scaling a resource caching popularity threshold value based on both the determined percentage of storage capacity at the cache node and cache pressure for the cache node, wherein scaling the resource caching popularity threshold value comprises
7. The method of claim 1 further comprising: applying a request for the particular resource available from the CDN to a statistical sampling filter; and generating the resource popularity counter for the particular resource if the request succeeds the statistical sampling filter.
determining a threshold popularity above which a particular resource will be cached at the cache node, and wherein cache pressure for the cache node is a function of a ratio between total writes to the cache node and the lifetime available writes to the cache node;
caching the particular resource in a cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value; calculating a deletion rate at which resources are deleted from the cache node storage system over a period of time; and adjusting the resource caching popularity threshold value based at least on the calculated deletion rate of the resources from the cache node storage system.
Claims 19-37 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-17 of U.S. Patent No 12,113,877.Although the claims at issue are not identical, they are not patentably distinct from each other because claims of the instant application are anticipated by the claims US 12,133,877. Claims 1-17 recite claims with a broader set of limitation than the claims US 12,113,877. See table below.
18/824,604
US 12,113,877
19. A method for operating a telecommunications network comprising: determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve;
determining a percentage of storage capacity at a cache node of a content delivery network (CDN); scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value;
and caching the particular resource in the cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value.
1. A method for operating a telecommunications network comprising: determining a percentage of storage capacity at a cache node of a content delivery network (CDN);
6. The method of claim 1 further comprising: applying a request for the particular resource available from the CDN to a statistical sampling filter; and generating the resource popularity counter for the particular resource if the request succeeds the statistical sampling filter.
determining lifetime available writes for the cache node, wherein lifetime available writes comprises a total amount of data that can be written to the cache node before the cache node must be replaced;
scaling a resource caching popularity threshold value based on both the determined percentage of storage capacity at the cache node and cache pressure for the cache node, wherein scaling the resource caching popularity threshold value comprises determining a threshold popularity above which a particular resource will be cached at the cache node, and wherein cache pressure for the cache node is a function of a ratio between total writes to the cache node and the lifetime available writes to the cache node; caching the particular resource in a cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value, wherein the cache node storage system comprises a first type of storage drive and a second type of storage drive, the first type of storage drive different than the second type of storage drive; storing a first resource in the first type of storage drive; and storing a second resource different from the first resource in the second type of storage drive.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claim 37 is rejected under 35 U.S.C. 102a1,a2 as being anticipated by Duzett US 2014/0297982.
Regarding claim 37, Duzett teaches a computer system comprising: a first processor; a second processor; a third processor, wherein each of the first processor, the second processor, and the third processor are coupled to a processor bus(a CDN comprising multiple first , second, third and so forth content servers, ¶15)
[0015] In embodiments, client device(s) 105a-c can communicate with one or more content delivery networks 120 via a connection to a content distribution network 115. For example, client device(s) 105a-c can request content (e.g., data, video, etc.) from a content server 125 by transmitting a request to a content distribution network 115, and the request can be routed from to the content server 125 via a content delivery network 120. In embodiments, the content distribution network 115 can take the form of an all-coaxial, all-fiber, hybrid fiber-coaxial (HFC) network, an over-the-air network, a telephone network, for example, among many others. It should be understood that the content server 125 can represent a local content server at a headend (e.g., a cable modem termination system) or can be provided by a service provided via a connection to the content delivery network(s) 120. In embodiments, content from the content server 125 can be delivered to a CPE device 110a-b through a content delivery network 120 or a content distribution network 115. It should be understood that content from the content server 125 can be delivered directly to a client device 105a-c through a content distribution network 115.
a system interface coupled to the processor bus and to an input/output bridge; a main memory coupled to the system interface; I/O bus coupled to the input/output bridge and to an I/O device and an I/O controller(content server comprising I/O, processors, system bus for storing and delivering content, ¶40)
[0040] FIG. 5 is a block diagram illustrating an example hardware configuration 500 operable to provide multi-tier storage for delivery services. While a content server 125 is shown, it should be understood that many different kinds of network devices can implement a multi-tier storage for delivery services. The configuration 500 can include a processor 510, a memory 520, a primary storage unit 530, a secondary storage unit 540, and an input/output device 550. Each of the components 510, 520, 530, 540 and 550 can, for example, be interconnected using a system bus 560. The processor 510 is capable of processing instructions for execution within the configuration 500. In one implementation, the processor 510 is a single-threaded processor. In another implementation, the processor 510 is a multi-threaded processor. The processor 510 is capable of processing instructions stored in the memory 520 or on the storage device storage units 530 or 540.
a plurality of HDD storage devices; and a plurality of solid state drives(server comprise SSD and HDD storage, ¶11).
[0011] Systems and methods of this disclosure can operate to implement a multi-tier storage using a mixture of storage components to achieve storage efficiencies while reducing costs. In embodiments, a multi-tier storage can produce higher streaming densities at lower costs than existing storage components used alone, thereby yielding a storage solution that simultaneously meets the goals of high throughput (e.g., rate of data reception/input or delivery/output), high density, and low cost. For example, a server (e.g., a video-on-demand server) can include a primary storage unit for storing content that is frequently requested and a secondary storage unit for storing content that is less frequently requested. The primary storage unit can be a storage medium that has a high throughput capability (e.g., SSD), and the secondary storage unit can be a storage medium that has a high storage capacity (e.g., HDD), thereby providing the server with greater bandwidth or throughput with which to provide popular content as well as greater storage capacity with which to store less-popular content.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 19-25 and 27-35 are rejected under 35 U.S.C. 103 as being unpatentable over Duzett US 2014/0297982, and further in view of Chiang US 2016/0179889 and Greunen US 2017/0168944.
Regarding claims 19, Duzett teaches a method for operating a telecommunications network comprising(CDN network, ¶15)
and caching the particular resource in the cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value(request frequency i.e counter used to trigger type of content cache used , request count providing an indication of popularity).
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Duzett teaches a system for content caching network with storage based on content popularity but does not teach determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve; scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value.
Chiang in the same field of endeavor as the invention teaches a system for cache management. Chiang teaches determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve(a sampling of statistics indicating popularity of content is determined using entropy(i.e.randomness) based function , ¶s44,73)
[0044] A cache system as described above was implemented. The cache system stores historical query result metadata, estimates selectivity using entropy-based approach and performs cache management. A variety of table data distributions and query distributions were tested. The simulation specifications can be summarized in the table that follows. Table data distribution refers to the selectivity distribution in the very large/foreign table (table external to the DBMS) and reflects how skewed the data is; query distribution refers to the probability that each values are queried, i.e. the popularity distribution, or “data temperature.”
[0073] According to an embodiment, at 620, the cache-based selectivity estimation manager receives statistics after the query condition is executed against the column of the table. The statistics are actual statistics obtained after the query condition is executed. The cache-based selectivity estimation manager also determines whether to store the statistics, discard the statistics, or store some portion of the statistics in the cache. Moreover, the cache-based selectivity estimation manager uses the statistics or a portion of the statistics and updates an entropy-based estimation procedure that produces the entropy-based estimated selectivity value and the entropy-based estimated total number of rows when the statistics or the portion of the statistics are stored in the cache.
scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value(capacity of the cache is tracked and used to trigger popularity based retention or eviction of cache entries, ¶s 38-40, 42, 43)
[0038] When cache capacity is smaller than the actual number of unique values, the cache is managed according to the following process: [
[0039] If the query sequence number (i.e. the number of queries that have been processed since the system started) is smaller than 2*capacity, entropy is updated with the selectivity of the “new value” (it is possible to be an old value previously noted but not in the cache). For example, when the cache capacity is 50 and sequence number is less than 100, the entropy is updated.
[0040] If the sequence number is larger than 2*capacity, entropy is updated with a probability of (capacity/sequence). For example, when the cache capacity is 50 and sequence number is larger than 100, say 124, then the entropy is updated with probability 50/124. The reason is that as more queries are processed, the is a higher chance that a new-incoming query is one that has been processed before, even if it is not stored in cache, since the cache size is limited. If the new-incoming query is actually an “old” one, it does not provide any new information towards the computation of entropy. Hence, the probability of updating the entropy is gradually decreased as more and more queries are processed.
[0042] After the cache is full, an importance factor is calculated: (s.sub.i−s).sup.2×c for each record in the cache. The importance factor shows how incorrectly each value is predicted (estimation error (s.sub.i−s).sup.2), and how often the value is queried (i.e. c). The higher the estimation error is, the more there is a necessity to keep the cache in order to reduce future estimation errors; and the more frequently a value is queried, the more likely it is that the value will be queried again in the future (i.e. popular values), thus popular values are kept in cache. The value with the smallest importance factor is found in the cache, and compare with the new incoming value. The “less important” value is eliminated.
[0043] Updates to the entropy of the cache occur as well (e.g., when a value is removed, added, etc.).
It would have been obvious to a person of ordinary skill in the art before the effective filing of the invention to modify Duzett’s method of content caching in HDD and SSD storage based on content popularity with entropy-based estimation of popular content for cache maintenance. The reason for this modification would be to implement more effect content caching keeping more popular content in faster SSD storage and less popular content in slower but high capacity HDD storage.
Duzett teaches determining the storage capacity in terms of fullness of storage but does not teach determining a percentage of storage capacity at a cache node of a content delivery network (CDN). Greunen in the same field of endeavor as the invention teaches a cache management system. Greunen teaches determining a percentage of storage capacity at a cache node of a content delivery network (CDN) (a threshold percentage (e.g., 80% or 90%) of being full also representing cache pressure, ¶55 ).
[0055] At step 535, the multi-tier cache appliance can determine whether to write the data item into the block cache of the multi-tier cache appliance based on the access history of the data item. Determining whether to write the data item into the block cache can occur after, when, or in response to the RAM being beyond a threshold percentage (e.g., 80% or 90%) of being full. At step 540, the multi-tier cache appliance can store the data item a block buffer configured to be the size of a single block in the block cache. In several embodiments, blocks in the block cache all have the same size. Storing the data item in the block buffer can be in response to determining to write the data item in the block cache (e.g., step 535).
It would have been obvious to a person of ordinary skill in the art before the effective filing of the invention to modify Duzett’s method of content caching in HDD and SSD storage using a percentage of fullness determination as taught by Greunen The reason for this modification would be to provide a method for cache fullness determination to effectuate more efficient content caching, keeping more popular content in faster SSD storage and less popular content in slower but high capacity HDD storage.
Regarding claims 20, Duzett teaches wherein the percentage of storage capacity at the cache node is within a first range of storage capacity percentages and scaling the resource caching popularity threshold value based on the determined percentage of storage capacity at the cache node comprises: applying a first scaling factor to the resource caching popularity threshold value, (transfer threshold between can be variable based on one or more factors, within a level fullness ¶30)
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Greunen teaches the first scaling factor corresponding to the first range of storage capacity percentages(a threshold percentage 80% of fullness, ¶55)
Regarding claim 21, Duzett teaches wherein the percentage of storage capacity at the cache node is within a second range of storage capacity percentages and scaling the resource caching popularity threshold value based on the determined percentage of storage capacity at the cache node comprises: applying a second scaling factor to the resource caching popularity threshold value, (transfer threshold between can be variable based on one or more factors, within a level fullness ¶30)
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Greunen teaches the second scaling factor corresponding to the second range of storage capacity percentages and different than the first scaling factor(a threshold percentage 90% of fullness, ¶55).
Regarding claims 22, Duzett teaches wherein the cache node storage system comprises a first type of storage drive and a second type of storage drive, the first type of storage drive different than the second type of storage drive, the method further comprising: storing a first resource in the first type of storage drive; and storing a second resource in the second type of storage drive(more popular content stored on SSD type storage and less popular content stored on HDD type storage, ¶11).
[0011] Systems and methods of this disclosure can operate to implement a multi-tier storage using a mixture of storage components to achieve storage efficiencies while reducing costs. In embodiments, a multi-tier storage can produce higher streaming densities at lower costs than existing storage components used alone, thereby yielding a storage solution that simultaneously meets the goals of high throughput (e.g., rate of data reception/input or delivery/output), high density, and low cost. For example, a server (e.g., a video-on-demand server) can include a primary storage unit for storing content that is frequently requested and a secondary storage unit for storing content that is less frequently requested. The primary storage unit can be a storage medium that has a high throughput capability (e.g., SSD), and the secondary storage unit can be a storage medium that has a high storage capacity (e.g., HDD), thereby providing the server with greater bandwidth or throughput with which to provide popular content as well as greater storage capacity with which to store less-popular content.
.
Regarding claims 23, Duzett teaches promoting the first resource from the first type of storage drive to the second type of storage drive when a popularity index for the first resource is greater than the resource caching popularity threshold value(transfer threshold based on popularity measure by hit/play count, ¶12).
[0012] In embodiments, a method can be used to ascertain the dynamic popularity of content associated with a storage unit entry by introducing a time-bounded popularity method. In embodiments, this method can introduce a rolling period window whereby content can be transferred from one storage unit to another when a play count (e.g., a count of the number of times a storage unit entry or content associated with the storage unit entry is requested) exceeds a transfer threshold. The rolling period window approach can be tuned by configuring various parameters (e.g., the number of periods for which to retain information, the length of each period, a transfer threshold defining a maximum number of storage unit entry hits over a period of time before the content is transferred from one storage unit to another).
Regarding claims 24, Duzett teaches demoting the second resource from the second type of storage drive to the first type of storage drive when a popularity index for the second resource is less than or equal to the resource caching popularity threshold value(hit count below threshold triggers removal i.e. eviction, ¶24).
[0024] In embodiments, a transfer module 240 can transfer content from the secondary storage unit 230 to the primary storage unit 220. For example, when an activity history associated with a secondary storage unit entry (e.g., storage unit entries D-F) reaches a predetermined threshold, the transfer module 240 can write the content of the secondary storage unit entry to the primary storage unit 220. In embodiments, after the content is written to the primary storage unit 220, the content can be removed from the secondary storage unit entry. For example, the content can become the MRU entry of the primary storage unit 220. In embodiments, when content is transferred to the primary storage unit 220, a LRU entry within the primary storage unit can be transferred from the primary storage unit to the secondary storage unit. For example, the LRU entry of the primary storage unit can become the MRU entry of the secondary storage unit 230, and the activity history associated with the storage unit entry can be reset. The migration of a LRU block from the primary storage unit back into the secondary storage unit allows the storage unit entry to continue to be hit unless or until it eventually falls out the bottom of the secondary storage unit, while also providing the opportunity for the content associated with the storage unit entry to be transferred back to the primary storage unit if warranted.
Regarding claim 25, Chiang teaches applying a request for the particular resource available from the CDN to a statistical sampling filter; and generating the resource popularity counter for the particular resource if the request succeeds the statistical sampling filter(selectivity estimates uses a portion(i.e. sampling) of the statistics to ascertain content popularity, number of hits. ¶s12,73).
[0012] In embodiments, a method can be used to ascertain the dynamic popularity of content associated with a storage unit entry by introducing a time-bounded popularity method. In embodiments, this method can introduce a rolling period window whereby content can be transferred from one storage unit to another when a play count (e.g., a count of the number of times a storage unit entry or content associated with the storage unit entry is requested) exceeds a transfer threshold. The rolling period window approach can be tuned by configuring various parameters (e.g., the number of periods for which to retain information, the length of each period, a transfer threshold defining a maximum number of storage unit entry hits over a period of time before the content is transferred from one storage unit to another).
[0073] According to an embodiment, at 620, the cache-based selectivity estimation manager receives statistics after the query condition is executed against the column of the table. The statistics are actual statistics obtained after the query condition is executed. The cache-based selectivity estimation manager also determines whether to store the statistics, discard the statistics, or store some portion of the statistics in the cache. Moreover, the cache-based selectivity estimation manager uses the statistics or a portion of the statistics and updates an entropy-based estimation procedure that produces the entropy-based estimated selectivity value and the entropy-based estimated total number of rows when the statistics or the portion of the statistics are stored in the cache.
Regarding claim 27, Duzett a networking system comprising at least one communication port for receiving requests for content maintained by a content delivery network (CDN)(CDN network for receiving content request from user , ¶15)
[0015] In embodiments, client device(s) 105a-c can communicate with one or more content delivery networks 120 via a connection to a content distribution network 115. For example, client device(s) 105a-c can request content (e.g., data, video, etc.) from a content server 125 by transmitting a request to a content distribution network 115, and the request can be routed from to the content server 125 via a content delivery network 120. In embodiments, the content distribution network 115 can take the form of an all-coaxial, all-fiber, hybrid fiber-coaxial (HFC) network, an over-the-air network, a telephone network, for example, among many others. It should be understood that the content server 125 can represent a local content server at a headend (e.g., a cable modem termination system) or can be provided by a service provided via a connection to the content delivery network(s) 120. In embodiments, content from the content server 125 can be delivered to a CPE device 110a-b through a content delivery network 120 or a content distribution network 115. It should be understood that content from the content server 125 can be delivered directly to a client device 105a-c through a content distribution network 115.
a storage system for storing content of the CDN(content server node , ¶15) a processing device; and a non-transitory computer-readable medium operably connected to the processing device, the non-transitory computer-readable medium configured to store instructions that, when executed by the processing device, cause the processing device to perform the operations of(content server, storing content to serve requested content, ¶17)
[0017] In embodiments, the content server 125 can include a plurality of storage units. In embodiments, an initial storage unit load can be implemented to increase performance of the content server 125. In such embodiments, the peak-miss and write loads can be avoided when a storage unit within the content server 125 is empty, or near empty. In embodiments, controlled pre-placement of content (e.g., cache-warming), managed pacing of pull-thru into empty storage units, avoidance of storage unit restarts during primetime, and/or other approaches can be used in conjunction with multi-tier storage methods.
and caching the particular resource in the cache node storage system when a resource popularity counter exceeds the scaled resource caching threshold value request frequency i.e counter used to trigger type of content cache used , request count providing an indication of popularity).
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Duzett teaches a system for content caching network with storage based on content popularity but does not teach determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve;
determining a percentage of storage capacity at a cache node of a content delivery network (CDN); scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value.
Chiang in the same field of endeavor as the invention teaches a system for cache management. Chiang teaches determining whether to track requests for a resource based on a statistical filter, wherein the statistical filter is based on randomness and a popularity curve(a sampling of statistics indicating popularity of content is determined using entropy(i.e.randomness) based function , ¶s44,73)
[0044] A cache system as described above was implemented. The cache system stores historical query result metadata, estimates selectivity using entropy-based approach and performs cache management. A variety of table data distributions and query distributions were tested. The simulation specifications can be summarized in the table that follows. Table data distribution refers to the selectivity distribution in the very large/foreign table (table external to the DBMS) and reflects how skewed the data is; query distribution refers to the probability that each values are queried, i.e. the popularity distribution, or “data temperature.”
[0073] According to an embodiment, at 620, the cache-based selectivity estimation manager receives statistics after the query condition is executed against the column of the table. The statistics are actual statistics obtained after the query condition is executed. The cache-based selectivity estimation manager also determines whether to store the statistics, discard the statistics, or store some portion of the statistics in the cache. Moreover, the cache-based selectivity estimation manager uses the statistics or a portion of the statistics and updates an entropy-based estimation procedure that produces the entropy-based estimated selectivity value and the entropy-based estimated total number of rows when the statistics or the portion of the statistics are stored in the cache.
scaling a resource caching popularity threshold value based on a cache pressure for the cache node to determine a scaled resource caching threshold value (capacity of the cache is tracked and used to trigger popularity based retention or eviction of cache entries, ¶s 38-40, 42, 43)
[0038] When cache capacity is smaller than the actual number of unique values, the cache is managed according to the following process: [
[0039] If the query sequence number (i.e. the number of queries that have been processed since the system started) is smaller than 2*capacity, entropy is updated with the selectivity of the “new value” (it is possible to be an old value previously noted but not in the cache). For example, when the cache capacity is 50 and sequence number is less than 100, the entropy is updated.
[0040] If the sequence number is larger than 2*capacity, entropy is updated with a probability of (capacity/sequence). For example, when the cache capacity is 50 and sequence number is larger than 100, say 124, then the entropy is updated with probability 50/124. The reason is that as more queries are processed, the is a higher chance that a new-incoming query is one that has been processed before, even if it is not stored in cache, since the cache size is limited. If the new-incoming query is actually an “old” one, it does not provide any new information towards the computation of entropy. Hence, the probability of updating the entropy is gradually decreased as more and more queries are processed.
[0042] After the cache is full, an importance factor is calculated: (s.sub.i−s).sup.2×c for each record in the cache. The importance factor shows how incorrectly each value is predicted (estimation error (s.sub.i−s).sup.2), and how often the value is queried (i.e. c). The higher the estimation error is, the more there is a necessity to keep the cache in order to reduce future estimation errors; and the more frequently a value is queried, the more likely it is that the value will be queried again in the future (i.e. popular values), thus popular values are kept in cache. The value with the smallest importance factor is found in the cache, and compare with the new incoming value. The “less important” value is eliminated.
[0043] Updates to the entropy of the cache occur as well (e.g., when a value is removed, added, etc.).
It would have been obvious to a person of ordinary skill in the art before the effective filing of the invention to modify Duzett’s method of content caching in HDD and SSD storage based on content popularity with entropy-based estimation of popular content for cache maintenance. The reason for this modification would be to implement more effect content caching keeping more popular content in faster SSD storage and less popular content in slower but high capacity HDD storage.
Duzett teaches determining the storage capacity in terms of fullness of storage but does not teach determining a percentage of storage capacity at a cache node of a content delivery network (CDN). Greunen in the same field of endeavor as the invention teaches a cache management system. Greunen teaches determining a percentage of storage capacity at a cache node of a content delivery network (CDN) (a threshold percentage (e.g., 80% or 90%) of being full also representing cache pressure, ¶55 ).
[0055] At step 535, the multi-tier cache appliance can determine whether to write the data item into the block cache of the multi-tier cache appliance based on the access history of the data item. Determining whether to write the data item into the block cache can occur after, when, or in response to the RAM being beyond a threshold percentage (e.g., 80% or 90%) of being full. At step 540, the multi-tier cache appliance can store the data item a block buffer configured to be the size of a single block in the block cache. In several embodiments, blocks in the block cache all have the same size. Storing the data item in the block buffer can be in response to determining to write the data item in the block cache (e.g., step 535).
It would have been obvious to a person of ordinary skill in the art before the effective filing of the invention to modify Duzett’s method of content caching in HDD and SSD storage using a percentage of fullness determination as taught by Greunen The reason for this modification would be to provide a method for cache fullness determination to effectuate more efficient content caching, keeping more popular content in faster SSD storage and less popular content in slower but high capacity HDD storage.
Regarding claims 28, Duzette teaches a first storage device comprising a solid state type memory drive storing a first resource(primary SSD storage, ¶11); and a second storage device comprising a hard disk type memory drive storing a second resource different than the first resource(secondary HDD storage, ¶11).
[0011] Systems and methods of this disclosure can operate to implement a multi-tier storage using a mixture of storage components to achieve storage efficiencies while reducing costs. In embodiments, a multi-tier storage can produce higher streaming densities at lower costs than existing storage components used alone, thereby yielding a storage solution that simultaneously meets the goals of high throughput (e.g., rate of data reception/input or delivery/output), high density, and low cost. For example, a server (e.g., a video-on-demand server) can include a primary storage unit for storing content that is frequently requested and a secondary storage unit for storing content that is less frequently requested. The primary storage unit can be a storage medium that has a high throughput capability (e.g., SSD), and the secondary storage unit can be a storage medium that has a high storage capacity (e.g., HDD), thereby providing the server with greater bandwidth or throughput with which to provide popular content as well as greater storage capacity with which to store less-popular content.
Regarding claim 29, Duzette teaches wherein the processing device further performs the operation of: promoting the second resource from the hard disk type memory drive to the solid state type memory drive when a popularity index for the second resource is greater than the resource caching popularity threshold value(transfer threshold triggers transfer of popular content to SSD and less popular content to HDD, ¶s11,12).
[0011] Systems and methods of this disclosure can operate to implement a multi-tier storage using a mixture of storage components to achieve storage efficiencies while reducing costs. In embodiments, a multi-tier storage can produce higher streaming densities at lower costs than existing storage components used alone, thereby yielding a storage solution that simultaneously meets the goals of high throughput (e.g., rate of data reception/input or delivery/output), high density, and low cost. For example, a server (e.g., a video-on-demand server) can include a primary storage unit for storing content that is frequently requested and a secondary storage unit for storing content that is less frequently requested. The primary storage unit can be a storage medium that has a high throughput capability (e.g., SSD), and the secondary storage unit can be a storage medium that has a high storage capacity (e.g., HDD), thereby providing the server with greater bandwidth or throughput with which to provide popular content as well as greater storage capacity with which to store less-popular content.
[0012] In embodiments, a method can be used to ascertain the dynamic popularity of content associated with a storage unit entry by introducing a time-bounded popularity method. In embodiments, this method can introduce a rolling period window whereby content can be transferred from one storage unit to another when a play count (e.g., a count of the number of times a storage unit entry or content associated with the storage unit entry is requested) exceeds a transfer threshold. The rolling period window approach can be tuned by configuring various parameters (e.g., the number of periods for which to retain information, the length of each period, a transfer threshold defining a maximum number of storage unit entry hits over a period of time before the content is transferred from one storage unit to another).
Regarding claim 30, Duzette teaches wherein the processing device further performs the operation of: demoting the first resource from the solid state type memory drive to the hard disk type memory drive when a popularity index for the first resource is less than or equal to the resource caching popularity threshold value(transfer threshold triggers transfer less popular content to HDD and more popular content to of popular content to SSD, ¶s11,12).
[0011] Systems and methods of this disclosure can operate to implement a multi-tier storage using a mixture of storage components to achieve storage efficiencies while reducing costs. In embodiments, a multi-tier storage can produce higher streaming densities at lower costs than existing storage components used alone, thereby yielding a storage solution that simultaneously meets the goals of high throughput (e.g., rate of data reception/input or delivery/output), high density, and low cost. For example, a server (e.g., a video-on-demand server) can include a primary storage unit for storing content that is frequently requested and a secondary storage unit for storing content that is less frequently requested. The primary storage unit can be a storage medium that has a high throughput capability (e.g., SSD), and the secondary storage unit can be a storage medium that has a high storage capacity (e.g., HDD), thereby providing the server with greater bandwidth or throughput with which to provide popular content as well as greater storage capacity with which to store less-popular content.
[0012] In embodiments, a method can be used to ascertain the dynamic popularity of content associated with a storage unit entry by introducing a time-bounded popularity method. In embodiments, this method can introduce a rolling period window whereby content can be transferred from one storage unit to another when a play count (e.g., a count of the number of times a storage unit entry or content associated with the storage unit entry is requested) exceeds a transfer threshold. The rolling period window approach can be tuned by configuring various parameters (e.g., the number of periods for which to retain information, the length of each period, a transfer threshold defining a maximum number of storage unit entry hits over a period of time before the content is transferred from one storage unit to another).
Regarding claim 31, Duzett teaches wherein the percentage of storage capacity is within a first range of storage capacity percentages and scaling the content caching popularity threshold value comprises: applying a first scaling factor to the content caching popularity threshold value, (transfer threshold between can be variable based on one or more factors, within a level fullness ¶30)
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Greunen teaches the first scaling factor corresponding to the first range of storage capacity percentages(a threshold percentage 80% of fullness, ¶55).
Regarding claim 32, Duzett teaches wherein scaling the content caching popularity threshold value with the first scaling factor results in a scaled content caching popularity threshold value that is less than an initial content caching popularity threshold value(popularity threshold based on multiple factors where threshold is dynamic and adjusts over different periods of time to lower threshold, ¶30).
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Regarding claim 33, Duzett teaches wherein the percentage of storage is within a second range of storage capacity percentages and scaling the content caching popularity threshold value comprises: applying a second scaling factor to the content caching popularity threshold value, (transfer threshold between can be variable based on one or more factors, within a level fullness ¶30)
[0030] FIG. 4 is a flowchart illustrating an example process 400 for operating a multi-tier storage using a rolling period window. The process 400 can start at 405 where a transfer threshold is initialized for a secondary storage unit. In embodiments, the transfer threshold can be a fixed number. In embodiments, the transfer threshold can be variable based upon factors such as, for example, a capacity or load associated with a content server 125 of FIG. 1, a capacity or load associated with a content distribution network 115 of FIG. 1, the amount of traffic that is expected for a storage unit, the type of content or data stored within the storage unit, among many other factors. In embodiments, the transfer threshold can be associated with a period of time. For example, the period of time can be a fixed length of time, or the period of time can be dynamic based upon factors such as, for example, total accessed block or CPU load. In embodiments, the period of time can be adjusted by altering the number of period counters maintained within an activity history, or count tag of a storage unit entry (e.g., the activity history can include 3, 4, 5, or any other number of period counters in order to maintain a count of content requests for a desired period of time), and/or by altering the length of time associated with a period (e.g., each period counter can maintain a count of content requests for a number of minutes, a number of hours, a number of days, or any other predetermined period of time).
Greunen teaches the second scaling factor corresponding to the second range of storage capacity percentages and different than the first scaling factor(a threshold percentage 90% of fullness, ¶55).
Regarding claim 34, Duzett teaches wherein scaling the content caching popularity threshold value with the second scaling factor causes the scaled content caching popularity threshold value to increase(popularity threshold based on multiple factors where threshold is dynamic and adjusts over different periods of time to higher threshold, ¶30)
Regarding claim 35, Chiang teaches wherein the processing device further performs the operations of: applying a statistical sampling filter to a request for the particular content; and generating the content popularity counter for the particular content if the request passes the statistical sampling filter selectivity estimates uses a portion(i.e. sampling) of the statistics to ascertain content popularity, number of hits. ¶s12,73).
[0012] In embodiments, a method can be used to ascertain the dynamic popularity of content associated with a storage unit entry by introducing a time-bounded popularity method. In embodiments, this method can introduce a rolling period window whereby content can be transferred from one storage unit to another when a play count (e.g., a count of the number of times a storage unit entry or content associated with the storage unit entry is requested) exceeds a transfer threshold. The rolling period window approach can be tuned by configuring various parameters (e.g., the number of periods for which to retain information, the length of each period, a transfer threshold defining a maximum number of storage unit entry hits over a period of time before the content is transferred from one storage unit to another).
[0073] According to an embodiment, at 620, the cache-based selectivity estimation manager receives statistics after the query condition is executed against the column of the table. The statistics are actual statistics obtained after the query condition is executed. The cache-based selectivity estimation manager also determines whether to store the statistics, discard the statistics, or store some portion of the statistics in the cache. Moreover, the cache-based selectivity estimation manager uses the statistics or a portion of the statistics and updates an entropy-based estimation procedure that produces the entropy-based estimated selectivity value and the entropy-based estimated total number of rows when the statistics or the portion of the statistics are stored in the cache.
Claims 26 and 36 are rejected under 35 U.S.C. 103 as being unpatentable over Duzett/Chiang/Greunen as applied to claim 25 and 35 above, and further in view of DeCenzo US 2014/0101687.
Regarding claim 26 and 36, Duzett/Chiang/Greunen teaches statistical sampling(i.e portion of stats used for estimation, Chiang ¶73 ) , but does not teach a random number for sampling. Thus Duzett/Chiang/Greunen do not teach wherein the statistical sampling filter comprises generating a random number value and passing the request for the particular resource available from the CDN through the statistical sampling filter if the random number value is less than a filter threshold value. DeCenzo being reasonably pertinent for to the problem of statistical sampling teach a system for statistical fitering. DeCenzo teaches wherein the statistical sampling filter comprises generating a random number value and passing the request for the particular resource available from the CDN through the statistical sampling filter if the random number value is less than a filter threshold value.
[0066] In one embodiment of the invention, each client or set top box within an information distribution system is given a respective filter configuration. In another embodiment of the invention, the clients within the information distribution system are divided into groups, where each member of a particular group is given a common statistics filter criteria. Client or set top box group membership is determined according to any of geographic region, head end node, household information, random selection and the like.
[0070] At step 420, a random number N is generated, illustratively in the range of 0 to 99. At step 430, a variable I is set equal to 1 (the variable I may also be set equal to numbers other than 1).
It would have been obvious to a person of ordinary skill in the art before the effective filing of the invention to modify Duzett/Chiang/Greunen with use of random number generated sample selection as taught by DeCenzo. The reason for this modification would be to provide method of random sampling to select a portion of the statistics.
Prior Art Cited But Not Used In Rejection
US 2015/0074222 - Method and apparatus for load balancing and dynamic scaling for low delay two-tier distributed cache storage system.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Tom Y. Chang whose telephone number is 571-270-5938. The examiner can normally be reached on Monday-Friday from 9am to 5pm.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Emmanuel Moise, can be reached on (571)272-3865. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from Patent Center. Status information for published applications may be obtained from Patent Center. Status information for unpublished applications is available through Patent Center for authorized users only. Should you have questions about access to Patent Center, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free).
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) Form at https://www.uspto.gov/patents/uspto-automated- interview-request-air-form.
/TOM Y CHANG/
Primary Examiner, Art Unit 2455