Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks #69126

Merged
merged 5 commits into from
Jan 17, 2025

Conversation

bgw
Copy link
Member

@bgw bgw commented Aug 21, 2024

When calling a turbo tasks function with unresolved arguments, we create a wrapper CachedTaskType::ResolveNative or ResolveTrait task.

These are quite frequently created, and their behavior is constrained and well-defined, so we should turn them into local tasks that aren't cached in the backend.

This logic is gated behind --features turbo-tasks/local_resolution, as it has some known issues.

Known Issues

A RawVc::LocalOutput can currently only be resolved within it's parent task.

The long-term plan is for everything to use ResolvedVc, so that this assumption is safe.

The short-term plan is to store local outputs more globally. Design here: https://www.notion.so/vercel/RawVc-LocalOutput-aede5f463f594ca58396eb3fdaffd865?pvs=4#02af94e3b9b64a3690f3e467abc0a47e

Test Plan

cargo nextest r --features turbo-tasks/local_resolution -p turbo-tasks -p turbo-tasks-memory

Closes PACK-3762

@bgw bgw changed the title Add schedule_local_task method draft(turbo-tasks): Add schedule_local_task method Aug 21, 2024
@ijjk
Copy link
Member

ijjk commented Aug 21, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
buildDuration 17.1s 15.5s N/A
buildDurationCached 14.6s 12.3s N/A
nodeModulesSize 418 MB 418 MB N/A
nextStartRea..uration (ms) 397ms 399ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
5306-HASH.js gzip 54 kB 54 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 241 B 242 B N/A
main-HASH.js gzip 34.3 kB 34.3 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 52.9 kB 52.9 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
index.html gzip 522 B 524 B N/A
link.html gzip 538 B 537 B N/A
withRouter.html gzip 519 B 520 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 208 kB 208 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
middleware-b..fest.js gzip 669 B 666 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 374 kB 374 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 143 kB 143 kB
app-page-tur..prod.js gzip 139 kB 139 kB
app-page.run...dev.js gzip 362 kB 362 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.8 kB 21.8 kB
pages.runtim...dev.js gzip 27.6 kB 27.6 kB
pages.runtim..prod.js gzip 21.8 kB 21.8 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.47 MB 2.47 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
0.pack gzip 2.1 MB 2.1 MB N/A
index.pack gzip 74.1 kB 74.3 kB ⚠️ +195 B
Overall change 74.1 kB 74.3 kB ⚠️ +195 B
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 91d1504

@ijjk
Copy link
Member

ijjk commented Aug 21, 2024

Tests Passed

@bgw bgw force-pushed the bgw/stub-task-output branch from 21b123a to 06c1a4f Compare August 22, 2024 00:35
@bgw bgw force-pushed the bgw/schedule-local-task branch from bf4e236 to 5f7cee9 Compare August 22, 2024 00:35
@bgw bgw changed the title draft(turbo-tasks): Add schedule_local_task method feat(turbo-tasks): Optionally schedule ResolveNative Aug 22, 2024
@bgw bgw changed the title feat(turbo-tasks): Optionally schedule ResolveNative feat(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks Aug 22, 2024
@bgw bgw force-pushed the bgw/stub-task-output branch from 06c1a4f to a718d9e Compare August 29, 2024 19:50
@bgw bgw force-pushed the bgw/schedule-local-task branch from 5f7cee9 to 8237476 Compare August 29, 2024 19:50
@bgw bgw force-pushed the bgw/stub-task-output branch from a718d9e to bcd07cf Compare August 29, 2024 22:32
@bgw bgw force-pushed the bgw/schedule-local-task branch from 8237476 to 694aa77 Compare August 29, 2024 22:32
@bgw bgw changed the base branch from bgw/stub-task-output to bgw/move-output-content August 29, 2024 22:32
@bgw bgw force-pushed the bgw/move-output-content branch from a00965d to 7ce8ac4 Compare August 30, 2024 18:00
@bgw bgw force-pushed the bgw/schedule-local-task branch from 694aa77 to 07ce967 Compare August 30, 2024 18:00
@bgw bgw changed the base branch from bgw/move-output-content to bgw/memory-task-cleanup August 30, 2024 18:00
@bgw bgw force-pushed the bgw/memory-task-cleanup branch from 9e272d6 to 52ea711 Compare September 4, 2024 00:25
@bgw bgw force-pushed the bgw/schedule-local-task branch from 07ce967 to f292e7b Compare September 4, 2024 00:26
@bgw bgw requested a review from sokra January 15, 2025 21:37
@bgw bgw force-pushed the bgw/schedule-local-task branch from 1e51631 to 01802b5 Compare January 15, 2025 21:53
@bgw bgw changed the base branch from bgw/return-values-should-be-non-local to graphite-base/69126 January 15, 2025 22:34
@bgw bgw force-pushed the bgw/schedule-local-task branch from 01802b5 to b388a14 Compare January 15, 2025 22:35
@bgw bgw force-pushed the graphite-base/69126 branch from fb37366 to 0031496 Compare January 15, 2025 22:35
@bgw bgw changed the base branch from graphite-base/69126 to canary January 15, 2025 22:35
@bgw bgw force-pushed the bgw/schedule-local-task branch 2 times, most recently from ecc0f8b to e6a764d Compare January 17, 2025 03:19
@bgw bgw changed the base branch from canary to bgw/vcarc-uses-operationvc January 17, 2025 03:20
@bgw bgw changed the base branch from bgw/vcarc-uses-operationvc to graphite-base/69126 January 17, 2025 04:19
@bgw bgw force-pushed the bgw/schedule-local-task branch from e6a764d to 5b30b25 Compare January 17, 2025 04:20
@bgw bgw force-pushed the graphite-base/69126 branch from db2b9f7 to 5e175e3 Compare January 17, 2025 04:20
@bgw bgw changed the base branch from graphite-base/69126 to canary January 17, 2025 04:20
@bgw bgw force-pushed the bgw/schedule-local-task branch from 5b30b25 to 1ae129d Compare January 17, 2025 04:21
@bgw bgw merged commit 6761881 into canary Jan 17, 2025
132 checks passed
Copy link
Member Author

bgw commented Jan 17, 2025

Merge activity

  • Jan 17, 12:04 PM EST: A user merged this pull request with Graphite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants