unreal: deeper ready queue keeps the 8 tile workers fed (L95); SW near set 2.37 -> 1.31 s
Unreal per-tile timeline: per-tile Core work is not slower than headless (FI 11.2 vs 16.2 ms per shared key); the gap was tick-paced admission with a small queue (FI ~5.2 of 8 slots busy). voxel.StreamingReadyQueueDepth default 16 -> 64 (effective 32 with 8 slots, total cap 40); result backlog cap 256 unchanged. First admission -> LOD0-2 settled: FI 2.72 -> 2.10 s, SW 2.37 -> 1.31 s (3 of 4 runs; one 6.9 s outlier re-admitting 3 LOD0 keys, cause open). apply_ms max 4.2 ms (14 ms budget). Frame-interval max 118-145 ms both before and after (open). World unchanged. Fast tier PASS; Linux UE host builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
35f0a67fe3
commit
5389abed2e
5 files changed
+682
-5
No files matched your search
@@ -248,7 +248,7 @@ namespace
|
||||
GVoxelForgeStreamingResultBacklogCap,
|
||||
TEXT("Maximum queued results plus admitted tile tasks; 0 disables the safety cap. This is separate from the worker-slot cap."));
|
||||
|
||||
int32 GVoxelForgeStreamingReadyQueueDepth = 16;
|
||||
int32 GVoxelForgeStreamingReadyQueueDepth = 64;
|
||||
FAutoConsoleVariableRef CVarVoxelForgeStreamingReadyQueueDepth(
|
||||
TEXT("voxel.StreamingReadyQueueDepth"),
|
||||
GVoxelForgeStreamingReadyQueueDepth,
|
||||
@@ -7658,6 +7658,31 @@ bool AVoxelWorld::InitializeVoxelForgeCoreWorld(FString& OutFailureReason)
|
||||
const bool bSnapshotSerialized = VoxelForgeCoreAdapter::SerializeResolvedWorld(
|
||||
Settings, StrateManager, ActiveCoreClipRadius, ActiveCoreMaxClipLevel,
|
||||
ActiveCoreVoxelSizeCm, Json, ExportError);
|
||||
FString CoreSnapshotOutputPath;
|
||||
if (bSnapshotSerialized
|
||||
&& FParse::Value(FCommandLine::Get(),
|
||||
TEXT("voxel.StartupTraceCoreSnapshotFile="), CoreSnapshotOutputPath))
|
||||
{
|
||||
CoreSnapshotOutputPath.TrimQuotesInline();
|
||||
if (!CoreSnapshotOutputPath.IsEmpty())
|
||||
{
|
||||
if (FFileHelper::SaveStringToFile(Json, *CoreSnapshotOutputPath,
|
||||
FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM))
|
||||
{
|
||||
VoxelForgeStartupTrace::RecordEvent(TEXT("core_snapshot_export"), FString::Printf(
|
||||
TEXT("\"path\":\"%s\",\"json_chars\":%d"),
|
||||
*CoreSnapshotOutputPath.ReplaceCharWithEscapedChar(), Json.Len()));
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogTemp, Error,
|
||||
TEXT("[VoxelForgeCoreRuntime] Could not write diagnostic Core snapshot to %s"),
|
||||
*CoreSnapshotOutputPath);
|
||||
OutFailureReason = TEXT("diagnostic Core snapshot export failed");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bTraceCoreStartup)
|
||||
{
|
||||
const double SnapshotSerializeEndSeconds = FPlatformTime::Seconds();
|
||||
|
||||
Reference in new issue
Block a user