Commit Graph

72 Commits

Author SHA1 Message Date
Devin Doucette
7e392be53b DDC: Fixed MeasureCacheRecord to only count payloads with data
#rb trivial
#rnx

[CL 16553211 by Devin Doucette in ue5-main branch]
2021-06-03 17:06:13 -04:00
Devin Doucette
8e3e3cc389 DDC: Fixed TryToPrefetch to work when there is only one backend
#rb Zousar.Shaker
#rnx

[CL 16549112 by Devin Doucette in ue5-main branch]
2021-06-03 12:57:44 -04:00
Devin Doucette
eb2cda6fba Added conversions and constructors to/from 12-byte arrays for FCbObjectId and DerivedData::FPayloadId
#rb Zousar.Shaker
#rnx

[CL 16536271 by Devin Doucette in ue5-main branch]
2021-06-02 13:06:45 -04:00
geoff evans
b1c54a1182 Add Trace Cpu Events and Counters to FileSystem DDC backend.
#jira none
#rb devin.doucette
#preflight 60a4337db7ccb000013e0fd6

[CL 16378052 by geoff evans in ue5-main branch]
2021-05-18 18:50:43 -04:00
Devin Doucette
8ce8977949 DDC: Added optional versions of BuildAction, BuildDefinition, BuildOutput, CacheRecord
- Optional versions are now returned from operations that may fail.
- Fixed a bug in the cache where a null record could be dereferenced.
- Improved validation when loading build types.

#rb Zousar.Shaker
#rnx

[CL 16332909 by Devin Doucette in ue5-main branch]
2021-05-14 14:47:11 -04:00
Devin Doucette
dd9e1ec58b DDC: Added support for cache records with null data
#rb Zousar.Shaker
#rnx
#preflight 609b6698b16d45000155cb04

[CL 16298475 by Devin Doucette in ue5-main branch]
2021-05-12 09:28:05 -04:00
Devin Doucette
70a7cb25a8 DDC: Added raw size to the payload
#rb Zousar.Shaker
#rnx
#preflight 609229cb58c4790001a048f0

[CL 16207035 by Devin Doucette in ue5-main branch]
2021-05-05 10:15:26 -04:00
Devin Doucette
3f40f504cf DDC: Changed Put to take a const array of cache records now that records are copyable
#rb Zousar.Shaker
#rnx

[CL 16184736 by Devin Doucette in ue5-main branch]
2021-05-03 12:05:18 -04:00
Devin Doucette
e42bbbedab DDC: Implement ICacheStore on FDerivedDataBackendInterface
This allows the new cache to be implemented more efficiently using the old cache backends because functionality like the corruption wrapper and key length limiter can be bypassed and the individual backends can store cache records in whatever way is most efficient for them.

The hierarchical backend may request payloads when they are not required due to incomplete tracking of backend state, and GetPayload will never fill other backends due to the inefficiency of the existing backend framework.

The filesystem backend does not cache any state in memory, which makes requests for individual payloads less efficient than if it cached a mapping of cache payload key to raw hash after the first request for a cache key.

The HTTP, S3, and pak file backends are not implemented for the new interface.

The backends do not implement ICacheStore::CancelAll() because the existing backend framework provides WaitForQuiescence to wait for completion of async requests, and the implementation of ICacheStore by those backends works with that mechanism.

The non-leaf backends (hierarchical, async put, etc.) do not update stats from the ICacheStore functions.

#rb Zousar.Shaker
#rnx
#preflight 60899f35d324590001b47517

[CL 16148296 by Devin Doucette in ue5-main branch]
2021-04-28 16:22:18 -04:00
Zousar Shaker
ce91cce583 Ensure that the DDC filesystem backend updates timestamps on files in GetCachedData (if within the last quarter of its cleanup lifetime), not solely from CachedDataProbablyExists.
#jira UE-112593
#rb devin.doucette
#preflight 6085a7400bdfbc0001c61a68

[CL 16110598 by Zousar Shaker in ue5-main branch]
2021-04-25 13:59:44 -04:00
Marc Audy
01b7c9f4f5 Merge UE5/RES @ 15958325 to UE5/Main
This represents UE4/Main @ 15913390 and Dev-PerfTest @ 15913304

[CL 15958515 by Marc Audy in ue5-main branch]
2021-04-08 14:32:07 -04:00
Marc Audy
0cbbc781ca Merge UE5/Release-Engine-Staging @ 15740152 to UE5/Main
This represents UE4/Main @ 15709114

[CL 15740605 by Marc Audy in ue5-main branch]
2021-03-18 15:20:03 -04:00
Ben Marsh
4f78759ae2 Disable intermittent DDC warning when running on build machines.
#rb none
#rnx

[CL 15478823 by Ben Marsh in ue5-main branch]
2021-02-19 18:09:28 -04:00
Devin Doucette
6394ccc1cd DDC: Added TryToPrefetch to check multiple keys for existence and prefetch the data into a fast cache backend
#rb Zousar.Shaker

[CL 15422719 by Devin Doucette in ue5-main branch]
2021-02-16 17:24:48 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Devin Doucette
9010b3e1a5 DDC: Return a status from PutCachedData
The async put backend now uses this new status to avoid calling CachedDataProbablyExists after every put, which has a high cost for certain backends.

#rb Zousar.Shaker
#fyi Joakim.Lindqvist, Stefan.Boberg

[CL 15000972 by Devin Doucette in ue5-main branch]
2021-01-06 14:18:01 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
geoff evans
60193de1ab Demote no-access to the DDC file share to be a warning instead of an error.
Making this an error breaks progression of BuildCookRun scenarios under UAT.

I wasn't able to find a way to communicate arguments from UAT's command line to it's invocation of the cooker. The default behavior of performance liabilities shouldn't be a failed build. Ideally it would be optional, and there would be a feature to promote this warning to an error where it is specifically desired, perhaps when running in a data center.

[CL 14258264 by geoff evans in ue5-main branch]
2020-09-03 19:15:09 -04:00
andrew grant
835b997f53 Edit-grated improved DDC behavior logging from Main to get better info around failing cooked tests
Temporarily turning on verbose DDC logging for EngineTest project

[FYI] zabir.hoque ben.ingram
#jira #rb na
#lockdown cristina.riveron

#ROBOMERGE-OWNER: andrew.grant
#ROBOMERGE-AUTHOR: andrew.grant
#ROBOMERGE-SOURCE: CL 12911373 in //UE4/Release-4.25/... via CL 12911375 via CL 12911433
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12911435 by andrew grant in Main branch]
2020-04-19 14:32:34 -04:00
andrew grant
8b29dd89a2 Fixed crash when verbose DDC logging is enabled
#rb trivial

#ROBOMERGE-SOURCE: CL 12647456 via CL 12647457 via CL 12649270 via CL 12649828 via CL 12649852 via CL 12649887
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12649913 by andrew grant in Main branch]
2020-04-07 00:58:12 -04:00
andrew grant
919e5daa5c Fix for DDC warnings in Fortnite EC jobs that use UnrealPak.
- Use a GUID rather than machine ID for write tests for programs (ShaderCompilerWorker, UnrealPak) that spin up multiple instances.

- When creating missing files for read-tests check if a failure could have been due to another instance creating that path at the same time.

- Improved some logging of issues to make future diagnosis of issues easier.

#rb swarm
[at]ryan.durand [at]devin.doucette

#ROBOMERGE-SOURCE: CL 12629650 via CL 12631522 via CL 12631547 via CL 12631579 via CL 12631609 via CL 12631644
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12631701 by andrew grant in Main branch]
2020-04-06 15:54:34 -04:00
andrew grant
95b59e82f4 Fixed a... typo? bad resolve? that was causing new data not to be written to DDC caches
[FYI] uriel.doyon, devin.doucette
#rb uriel.doyon

#ROBOMERGE-SOURCE: CL 12473303 via CL 12473315 via CL 12473325 via CL 12473327
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)

[CL 12473331 by andrew grant in Main branch]
2020-03-27 14:57:01 -04:00
andrew grant
6a3a6a6425 Temp workaround for FORT-273296 while I investigate why ShaderCompiler on Mac doesn't like the speed test option.
[FYI] stefan.boberg
#rb na
#tests compiled SCW and booted into editor with -noshaderddc to force shader compiles

#ROBOMERGE-SOURCE: CL 12466138 via CL 12468387 via CL 12468494 via CL 12468566
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)

[CL 12468580 by andrew grant in Main branch]
2020-03-27 11:20:28 -04:00
andrew grant
14d1b683f8 Moved some DDC debug options into a common class that can be provided to a backend to simulate certain behavior.
E.g.

'-ddc-local-missrate=50' simulates a 50% miss rate of keys on the local backend,
'-ddc-shared-misstypes=AnimSeq' simulates misses for any AnimSeq key. Use + to combine keys. E.g. AnimSeq+Audio

Memory DDC, FileSystemDDC and S3DDC support these options as do the classes that wrap other backends (e.g. AsyncPut).

#tests lots of warm and cold DDC
#swarm https://p4-swarm.epicgames.net/reviews/12458696

#ROBOMERGE-SOURCE: CL 12466119 via CL 12466177
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)

[CL 12466179 by andrew grant in Main branch]
2020-03-27 08:12:16 -04:00
andrew grant
e224300cc3 Moved some DDC debug options into a common class that can be provided to a backend to simulate certain behavior.
E.g.

'-ddc-local-missrate=50' simulates a 50% miss rate of keys on the local backend,
'-ddc-shared-misstypes=AnimSeq' simulates misses for any AnimSeq key. Use + to combine keys. E.g. AnimSeq+Audio

Memory DDC, FileSystemDDC and S3DDC support these options as do the classes that wrap other backends (e.g. AsyncPut).

#tests lots of warm and cold DDC
[at]ben.marsh [at]josh.engebretson [at]devin.doucette

#ROBOMERGE-SOURCE: CL 12458693 via CL 12462167 via CL 12464485 via CL 12464606
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v672-12450963)

[CL 12464717 by andrew grant in Main branch]
2020-03-26 20:55:39 -04:00