Time Start module evaluation separately from first-request app init - #1677
Merged
Conversation
A cold isolate pays both: evaluating the 2.56MB module graph and building the app's Effect layers for the first time. Those have different fixes. Import the same virtual ids loadEntries uses so its cache finds the module already evaluated, leaving handlerMs to cover only the rest.
Contributor
Cloudflare previewTorn down — the PR is closed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The cold/warm probe showed warm isolates answering in 9-104ms and cold ones in 2.5-4.9s, with
wasWarmfalse on essentially every request. But one warm sample took 5247ms and n=4 warm is too small to conclude from.More importantly, "first Start request in this isolate" bundles two different costs:
loadEntries)Those want different fixes (warm/split/slim the graph vs. fix layer construction), and nothing so far distinguishes them. Importing the same virtual ids
loadEntriesuses means its cache finds the module already evaluated, somoduleMscaptures the graph load andhandlerMscaptures everything else.Diagnostic only.