Commit Graph

35 Commits

Author SHA1 Message Date
devin doucette
4cb30fbc48 DDC: Fixed accumulation and reporting of cache store latency
#jira UE-198599
#rb Zousar.Shaker

[CL 29079042 by devin doucette in ue5-main branch]
2023-10-25 03:15:00 -04:00
devin doucette
ce32414b30 DDC: Disabled propagation of gets from the cache of in-flight puts and added support for write-only cache stores
- Do not invoke the put completion callback from the hierarchy until a put to a readable node succeeds, which is now tracked by bFinished.
- Use StopGetStore on the in-flight put cache to stop gets from that cache from propagating as duplicate puts.
- Disable the in-flight put cache for async wrappers used by propagation of gets.

#jira UE-192655
#rb Zousar.Shaker

[CL 27771618 by devin doucette in ue5-main branch]
2023-09-11 17:24:27 -04:00
devin doucette
3df0bf7f14 DDC: Gather bucket stats from the new ICacheStats
#jira UE-133395
#rb Matt.Peters
#rnx

[CL 26555188 by devin doucette in ue5-main branch]
2023-07-24 16:52:05 -04:00
devin doucette
788aec3845 DDC: Disable stats for cache stores that should not be visible
#jira UE-133395
#rb Zousar.Shaker
#rnx

[CL 26192921 by devin doucette in ue5-main branch]
2023-06-22 16:35:48 -04:00
devin doucette
3a730d179e DDC: Added ICacheStoreStats to the Jupiter cache
#jira UE-133395
#rb Zousar.Shaker
#rnx

[CL 26186125 by devin doucette in ue5-main branch]
2023-06-22 12:55:58 -04:00
devin doucette
27cdd0bc2a DDC: Fixed the tests of the cache hierarchy
#rb Zousar.Shaker
#rnx

[CL 25871631 by devin doucette in ue5-main branch]
2023-06-08 10:50:44 -04:00
devin doucette
3897ae4e92 DDC: Added ICacheStoreStats to the memory cache and cleaned up graph node lifetime
#jira UE-133395
#rb Zousar.Shaker
#rnx

[CL 25870464 by devin doucette in ue5-main branch]
2023-06-08 10:07:21 -04:00
devin doucette
5229f46947 DDC: Added ICacheStoreStats and related functionality for cache stores to report stats
#jira UE-133395
#rb Zousar.Shaker
#rnx

[CL 25843613 by devin doucette in ue5-main branch]
2023-06-07 09:47:55 -04:00
devin doucette
6fff9c0396 DDC: Started toward exposing the cache store owner to the cache stores and flattening the hierarchy
- Construct an empty hierarchy first and populate it as the graph is parsed.
- Record the need for async and verify nodes, and create them only at the end.
- Extract parsing of debug options including throttling into the cache store owner.
- Expose the cache store owner to the cache store parsing/creation functions.
- Remove the unused speed class debug option.

#preflight 64777c254b0d5a1eb157ac8b
#rb Joe.Pribele
#rnx

[CL 25713242 by devin doucette in ue5-main branch]
2023-05-31 16:32:05 -04:00
devin doucette
7bcc3722c1 DDC: Fixed merging and filtering of partial records in the cache hierarchy
#rb Zousar.Shaker

[CL 25310446 by devin doucette in ue5-main branch]
2023-05-02 19:07:42 -04:00
Devin Doucette
023e2fd5e8 DDC: Fixed a race condition in the cache hierarchy
The hierarchy now uses a request barrier after the first synchronous request completion. Async requests could occasionally complete fast enough that DispatchRequests would be left to handle the completion. In that scenario, there would not be a barrier in place when beginning any subsequent requests, which would lead to a failed assertion in the request owner.

#preflight 63ceb5c63a03cb0bbff95362
#rb Zousar.Shaker

[CL 23848713 by Devin Doucette in ue5-main branch]
2023-01-25 11:05:29 -05:00
Devin Doucette
d508667187 DDC: Added a missing read lock in the cache hierarchy
#preflight 63751a331d25fe8b93371452
#rb Matt.Peters
#rnx

[CL 23161581 by Devin Doucette in ue5-main branch]
2022-11-16 15:43:58 -05:00
Devin Doucette
9aee9a4bd8 DDC: Fixed unsafe type cast warnings
#preflight 6317fc04a20b67673b1de7c3
#rb Zousar.Shaker
#rnx

[CL 21850770 by Devin Doucette in ue5-main branch]
2022-09-07 10:37:16 -04:00
devin doucette
9b905880aa DDC: Fixed UserData value returned by the cache hierarchy
#rb trivial
#rnx

[CL 21449943 by devin doucette in ue5-main branch]
2022-08-18 17:04:23 -04:00
Devin Doucette
055ba32b38 DDC: Added partial cache record propagation to the hierarchy, with tests
#jira UE-156058
#preflight 62fd59d5e64b1a51093918f8
#rb Zousar.Shaker

[CL 21441390 by Devin Doucette in ue5-main branch]
2022-08-18 09:51:07 -04:00
devin doucette
1d698f7814 DDC: Removed the remaining legacy cache implementations and made the default implementation non-virtual
#preflight 62a38afedf2d057cb2814ea4
#rb Steve.Robb
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 20601122 via CL 20601125 via CL 20601130
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)

[CL 20602835 by devin doucette in ue5-main branch]
2022-06-10 17:21:00 -04:00
Devin Doucette
da04ab9644 DDC: Fixed cache put propagation for nodes that store async
#preflight 62798a72242446ce6c69df25
#rb Zousar.Shaker
#rnx

[CL 20121708 by Devin Doucette in ue5-main branch]
2022-05-10 08:46:00 -04:00
Devin Doucette
7a50c98265 DDC: Added propagation of cache records that contain metadata with no values
#preflight 62797bdd4561731dbe10ecdf
#rb Matt.Peters

[CL 20111217 by Devin Doucette in ue5-main branch]
2022-05-09 17:18:23 -04:00
Devin Doucette
fa8f3dbe82 DDC: Fixed duplicate puts caused by the in-flight memory cache
Without using StopGetStore, get hits on the in-flight cache would propagate as puts to subsequent nodes in the hierarchy. Since the in-flight cache is only used as temporary storage while a put is in flight, this caused duplicates of the in-flight puts, which manifests as move collision log spam from the file system cache store.

#preflight 625d772d691f49969ea93249
#rb Zousar.Shaker
#rnx

[CL 19785647 by Devin Doucette in ue5-main branch]
2022-04-18 11:06:05 -04:00
Devin Doucette
14583c8432 DDC: Back out 19757142 because it broke cache puts
#preflight skip
#rb none
#rnx

[CL 19763306 by Devin Doucette in ue5-main branch]
2022-04-14 17:05:38 -04:00
Devin Doucette
e35dc9fd40 DDC: Fixed duplicate puts caused by the in-flight memory cache
Without using StopStore, get hits on the in-flight cache would propagate as puts to subsequent nodes in the hierarchy. Since the in-flight cache is only used as temporary storage while a put is in flight, this caused duplicates of the in-flight puts, which manifests as move collision log spam from the file system cache store.

#preflight 625835d97f628a9018d8acf6
#rb Zousar.Shaker
#rnx

[CL 19757142 by Devin Doucette in ue5-main branch]
2022-04-14 11:06:11 -04:00
Devin Doucette
37820d6bbc DDC: Fixed incorrect skipping of get propagation past nodes with the flag StopStore
The wrong response status was being checked, and caused subsequent nodes to be skipped even if the StopStore node did not contain the data, if any previous node contained the data.

#preflight 62582d67946114248db62d58
#rb Zousar.Shaker
#rnx

[CL 19756375 by Devin Doucette in ue5-main branch]
2022-04-14 10:31:55 -04:00
Devin Doucette
6c0885e988 DDC: Fixed the async cache hierarchy to advance to the next node when nodes are async
#preflight 622f9ce380715dc6dadebf59
#rb Zousar.Shaker
#rnx

[CL 19377851 by Devin Doucette in ue5-main branch]
2022-03-14 16:15:03 -04:00
devin doucette
0e929ad2f3 DDC: Re-added the in-flight cache for async puts
- Legacy puts are now executing asynchronously.
- Memory cache now merges partial cache records.
- Memory cache is used to store data temporarily while it is being written by an async put.
- Expanded the deprecation of persisted boot/memory caches, which no longer offer the performance benefit that they used to.
- Fixed the pak file cache to skip data with a compressed size of over 2 GiB.

#jira UE-141307
#preflight 620d85f93609e19371510fb1
#lockdown Aurel.Cordonnier
#rb Zousar.Shaker
#rnx

#ROBOMERGE-OWNER: Devin.Doucette
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-COMMAND: _robomerge UE5-Main
#ROBOMERGE-SOURCE: CL 19076205 in //UE5/Release-5.0/... via CL 19094550
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19095974 by devin doucette in ue5-main branch]
2022-02-23 13:40:18 -05:00
devin doucette
778a7d292b DDC: Added compression support to legacy cache values
The cache stores can individually control their "legacy mode" now, which offers a choice of ValueOnly, ValueWithLegacyFallback, LegacyOnly.
- Using ValueOnly will forward every legacy request through the Value API, which compresses values by default and supports values larger than 2 GiB.
- Using ValueWithLegacyFallback behaves like ValueOnly, but misses from GetValue are forwarded to GetCachedData, and stored with PutValue if found.
- Using LegacyOnly will forward every legacy request through the Legacy API.

FLegacyCacheValue uses shared state to ensure that each value is compressed or decompressed at most once.

#jira UE-134381
#preflight 62054b430c64e1822f41231b
#lockdown Mark.Lintott
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18940270 in //UE5/Release-5.0/... via CL 18941016 via CL 18941392
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 18941401 by devin doucette in ue5-main branch]
2022-02-10 14:57:42 -05:00