Commit Graph

411 Commits

Author SHA1 Message Date
devin doucette
86dfb790ef DDC: Optimized GetChunks in the file system cache store to read only the requested range from disk
Contains changes to other structured cache file access to stream data from archives instead of loading the whole file into memory. The record package will now be split into separate allocations on load, rather than the previous behavior where the whole package was kept in memory as long as any part of it was referenced.

#rb Zousar.Shaker
#rnx
#preflight 61b11fd75238845473be0c30

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18413427 in //UE5/Release-5.0/... via CL 18413472
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18413485 by devin doucette in ue5-release-engine-test branch]
2021-12-08 17:15:36 -05:00
devin doucette
27c1393427 CompressedBuffer: Removed partial decompression from FCompressedBuffer now that FCompressedBufferReader is available
Requiring the use of a separate reader type makes it more likely that readers will be reused, and makes it easier to audit reader usage going forward. Reusing readers is desirable to reduce the number of large temporary allocations made during partial decompression of a buffer.

- Added FCompressedBuffer::Save(FArchive&) and renamed FromCompressed(FArchive&) to Load(FArchive&).
- Added FCompressedBufferReaderSourceScope to set a buffer source within a scope.
- Added proper bounds checks to FNoneDecoder.
- Store the header checksum on the decoder context to allow raw blocks to be reused across sources.
- Decode the header on the fly to avoid a temporary header allocation when the header is in contiguous memory.

#rb Zousar.Shaker
#rnx
#preflight 61a98d53800738dbfbc84c73

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18382211 in //UE5/Release-5.0/... via CL 18382310
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18382377 by devin doucette in ue5-release-engine-test branch]
2021-12-06 10:16:05 -05:00
devin doucette
cea98e6ab4 DDC: Split build diagnostics into messages and logs
Messages are deterministic output recorded explicitly by the build function. Logs will be automatically captured from the output log and are not necessarily deterministic. The presence of logs in a build output automatically disables caching of the build output.

#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18286155 in //UE5/Release-5.0/... via CL 18286173
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18286201 by devin doucette in ue5-release-engine-test branch]
2021-11-24 13:25:25 -05:00
mark lintott
a90eaa1e87 Optimise FZenDerivedDataBackend::IsRemote() by checking the once on backend creation and caching the result
#jira UE-135791
#rb trivial
[FYI] zousar.shaker
#preflight 619e27c3aa4521f9e7b6b567

#ROBOMERGE-AUTHOR: mark.lintott
#ROBOMERGE-SOURCE: CL 18282332 in //UE5/Release-5.0/... via CL 18282340
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18282346 by mark lintott in ue5-release-engine-test branch]
2021-11-24 07:17:42 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
devin doucette
a6c9c59388 DDC: Fixed the async put wrapper with -NoThreading
#rb Zousar.Shaker
#rnx
#preflight 6194654c34377daf864d4f80

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18223152 in //UE5/Release-5.0/... via CL 18223191
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18223207 by devin doucette in ue5-release-engine-test branch]
2021-11-17 09:49:24 -05:00
devin doucette
a171327680 DDC: Added structured cache support to the pak file cache store
#rb Zousar.Shaker
#rnx
#preflight 61942ee0cc0baff9b08f7659

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18218377 in //UE5/Release-5.0/... via CL 18218399
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18218408 by devin doucette in ue5-release-engine-test branch]
2021-11-16 21:12:12 -05:00
devin doucette
4ae155a04b DDC: Improved the cache fill behavior of the hierarchical backend for the structured cache
#rb Zousar.Shaker
#rnx
#preflight 61945597f65efa9243e340da

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18218366 in //UE5/Release-5.0/... via CL 18218394
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18218405 by devin doucette in ue5-release-engine-test branch]
2021-11-16 21:12:04 -05:00
devin doucette
af6b0b0dd2 DDC: Fixed the size calculation for partial payload reads in the file system cache store
#rb Zousar.Shaker
#rnx
#preflight 61942eab1c373afe37b20142

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18217611 in //UE5/Release-5.0/... via CL 18217675
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18217685 by devin doucette in ue5-release-engine-test branch]
2021-11-16 20:09:56 -05:00
devin doucette
b958bf4af6 DDC: Fixed file system cache maintenance with -NoThreading
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18194101 in //UE5/Release-5.0/... via CL 18194138
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18194155 by devin doucette in ue5-release-engine-test branch]
2021-11-15 13:56:02 -05:00
devin doucette
17c37e1a01 DDC: Reorganize the code in the file system cache store
No functional changes, only bringing the code style in line with the current coding standards since nearly the entire file has been modified for 5.0 anyway.

#rb none
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18135592 in //UE5/Release-5.0/... via CL 18135607
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v889-18060218)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18135617 by devin doucette in ue5-release-engine-test branch]
2021-11-10 14:44:18 -05:00
devin doucette
53f316587b DDC: New filesystem cache store directory layout and file format
- Implemented only for the structured cache initially.
- Records are stored as compact binary packages with payloads stored within the record if small enough.
- Records are stored in Records/{Bucket}/{01}/{23}/{456789abcdef0123456789abcdef01234567} based on the hash in the cache key.
- Content that exceeds the size allowed for storage within the record is stored in Content/{01}/{23}/{456789abcdef0123456789abcdef01234567} based on the hash of the content.
- Both records and content are written to disk with their hash as a suffix, and are always checked on load.
- Maximum size of compressed data stored in the package can be configured by MaxRecordSizeKB and MaxValueSizeKB.
- Maintenance of the cache, to delete unused files, has been rewritten and can now scan ~175k files/second on modern hardware, though is limited to 10k files/second in the config to avoid adding too much overhead.

#rb Zousar.Shaker
#preflight 618b75c14a0c609a29204032
#preflight 618bfb5ec717ba4e929b7ac0

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18133085 in //UE5/Release-5.0/... via CL 18133356
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v889-18060218)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18133430 by devin doucette in ue5-release-engine-test branch]
2021-11-10 13:08:00 -05:00
aurel cordonnier
fc542f6cfd Merge from Release-Engine-Staging @ 18081189 to Release-Engine-Test
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971

[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
2021-11-07 23:43:01 -05:00
devin doucette
3fd0edf1c2 DDC: Added a missing request barrier in the hierarchical backend
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18040463 in //UE5/Release-5.0/... via CL 18040477
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v885-17909292)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18040498 by devin doucette in ue5-release-engine-test branch]
2021-11-03 16:32:08 -04:00
devin doucette
6f080fc3f1 DDC: Added a ServerID field to the Jupiter configuration to allow reading settings from another section
When ServerID is used, configuration is first loaded from a key matching the ServerID field, in the HordeStorageServers section of the same INI. This makes it easier to put Jupiter configuration in a consistent place and have it stripped by the cooker to avoid leaking any of the configuration.

#rb Zousar.Shaker
#rnx
#preflight 617a28570cec4300011619d4

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17961730 in //UE5/Release-5.0/... via CL 17961740
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v885-17909292)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17961744 by devin doucette in ue5-release-engine-test branch]
2021-10-28 09:39:12 -04:00
devin doucette
cf9f616446 DDC: Fixed a static analysis warning in the memory backend
#jira UE-132800
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17926730 in //UE5/Release-5.0/... via CL 17927106
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v885-17909292)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17927130 by devin doucette in ue5-release-engine-test branch]
2021-10-26 12:33:40 -04:00
joakim lindqvist
eec8f48f1a Support reading HttpBackend secret from a file
#ROBOMERGE-AUTHOR: joakim.lindqvist
#ROBOMERGE-SOURCE: CL 17921575 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v885-17909292)

[CL 17922647 by joakim lindqvist in ue5-release-engine-test branch]
2021-10-26 09:14:51 -04:00
aurel cordonnier
a6e741e007 Merge from Release-Engine-Staging @ 17915896 to Release-Engine-Test
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-25 20:05:28 -04:00
devin doucette
dc4658fa91 DDC: Updated IBuildWorkerExecutor to allow filtering of payloads
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17876434 in //UE5/Release-5.0/... via CL 17876436
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17876451 by devin doucette in ue5-release-engine-test branch]
2021-10-20 14:50:22 -04:00
devin doucette
01c33e6702 DDC: Reworked FBuildSession to allow filtering of payloads
- Build now takes optional inputs for consistency with BuildAction.
- BuildAction has been renamed to Build and works the same as Build except it starts from an action.
- Build now takes a FBuildPolicy, which is implicitly constructible from EBuildPolicy, and allows setting the policy by payload.
- FBuildContext and FBuildConfigContext now have policy masks that allow clearing flags across every payload in the build.
- EBuildPolicy has CacheStore split into CacheStoreOnQuery and CacheStoreOnBuild for more control of cache behavior.
- Builds now use consistent completion callback parameters, FBuildCompleteParams.
- Build types now have debugger visualization.

#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17874670 in //UE5/Release-5.0/... via CL 17874724
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17874740 by devin doucette in ue5-release-engine-test branch]
2021-10-20 12:38:01 -04:00
devin doucette
10df2328dd DDC: Added structured cache support to the throttle wrapper
#rb Zousar.Shaker
#rnx
[FYI] Danny.Couture

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17872207 in //UE5/Release-5.0/... via CL 17872235
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17874113 by devin doucette in ue5-release-engine-test branch]
2021-10-20 11:50:36 -04:00
devin doucette
9cbcc4508a DDC: Limit async put priority to Highest to avoid blocking
#rb Matt.Peters
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17866436 in //UE5/Release-5.0/... via CL 17866457
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17866461 by devin doucette in ue5-release-engine-test branch]
2021-10-19 17:31:09 -04:00
devin doucette
4025bebb2d DDC: Fixed fetching of partial records in the filesystem backend
#rb Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17860656 in //UE5/Release-5.0/... via CL 17860683
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17860687 by devin doucette in ue5-release-engine-test branch]
2021-10-19 10:38:14 -04:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
devin doucette
3331f68391 DDC: Added ECachePolicy::PartialOnError and implemented partial cache records in the filesystem and memory backends
#rb Zousar.Shaker
#rnx
#preflight 615f703dcec44a000146cf80

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17759092 in //UE5/Release-5.0/... via CL 17760688
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v879-17706426)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17760906 by devin doucette in ue5-release-engine-test branch]
2021-10-08 11:01:21 -04:00