frankenphp
feat: thread autoscaling
#1266
Merged

feat: thread autoscaling #1266

AlliBalliBaba merged 214 commits into main from feat/auto-scale-clock-time
ghost
AlliBalliBaba Decouple workers.
fe1158fb
AlliBalliBaba Moves code to separate file.
ad341400
AlliBalliBaba Cleans up the exponential backoff.
89b211d6
AlliBalliBaba Initial working implementation.
7d2ab8cc
AlliBalliBaba Refactors php threads to take callbacks.
f7e7d41f
AlliBalliBaba Cleanup.
c03c59bd
AlliBalliBaba Cleanup.
a9857dc8
AlliBalliBaba Cleanup.
bac9555d
AlliBalliBaba Cleanup.
a2f8d59d
AlliBalliBaba Merge branch 'main' into refactor/start-worker-threads-directly
279924ca
AlliBalliBaba Adjusts watcher logic.
08254531
AlliBalliBaba Adjusts the watcher logic.
17d5cbe5
AlliBalliBaba Fix opcache_reset race condition.
09e0ca67
AlliBalliBaba Merge branch 'main' into refactor/start-worker-threads-directly
a726a2c3
AlliBalliBaba Fixing merge conflicts and formatting.
7f13ada3
AlliBalliBaba Prevents overlapping of TSRM reservation and script execution.
13fb4bb7
AlliBalliBaba Adjustments as suggested by @dunglas.
a8a00c83
AlliBalliBaba Adds error assertions.
b4dd1382
AlliBalliBaba Adds comments.
03f98fad
AlliBalliBaba Removes logs and explicitly compares to C.false.
e52dd0fe
AlliBalliBaba Resets check.
cd98e33e
AlliBalliBaba Adds cast for safety.
4e2a2c61
AlliBalliBaba Fixes waitgroup overflow.
c51eb931
AlliBalliBaba Resolves waitgroup race condition on startup.
89d8e267
AlliBalliBaba Moves worker request logic to worker.go.
3587243f
AlliBalliBaba Removes defer.
ec32f0cc
AlliBalliBaba Removes call from go to c.
4e356989
AlliBalliBaba Merge branch 'main' into refactor/start-worker-threads-directly
740fac79
AlliBalliBaba Fixes merge conflict.
8a272cba
AlliBalliBaba Adds fibers test back in.
ecce5d52
AlliBalliBaba Refactors new thread loop approach.
06ebd67c
AlliBalliBaba Removes redundant check.
c811f4a1
AlliBalliBaba Adds compareAndSwap.
6bd047a4
AlliBalliBaba Refactor: removes global waitgroups and uses a 'thread state' abstrac…
55ad8ba8
AlliBalliBaba Merge branch 'main' into refactor/start-worker-threads-directly
3ffbe063
AlliBalliBaba Removes unnecessary method.
01ed92bc
AlliBalliBaba Updates comment.
790cccc1
AlliBalliBaba Removes unnecessary booleans.
0dd26051
AlliBalliBaba test
60a66b41
AlliBalliBaba First state machine steps.
4719fa8e
AlliBalliBaba Splits threads.
f72e8cbb
AlliBalliBaba Minimal working implementation with broken tests.
d20e7067
AlliBalliBaba Fixes tests.
6747d156
AlliBalliBaba Refactoring.
54dc2675
AlliBalliBaba Merge branch 'main' into refactor/start-worker-threads-directly
660efcd4
AlliBalliBaba Fixes merge conflicts.
62147546
AlliBalliBaba Formatting
00eb8340
AlliBalliBaba C formatting.
02b73b16
AlliBalliBaba More cleanup.
421904e8
AlliBalliBaba Allows for clean state transitions.
cca2a00a
AlliBalliBaba Adds state tests.
ec8aeb7b
AlliBalliBaba Adds support for thread transitioning.
b598bd34
AlliBalliBaba Fixes the testdata path.
66cedbdb
AlliBalliBaba Formatting.
06af5d58
AlliBalliBaba Allows transitioning back to inactive state.
71c16bc1
AlliBalliBaba Fixes go linting.
5095342a
AlliBalliBaba Formatting.
4b180593
AlliBalliBaba Removes duplication.
15429d99
AlliBalliBaba Applies suggestions by @dunglas
c0806086
AlliBalliBaba Removes redundant check.
a166b876
AlliBalliBaba Locks the handler on restart.
9491e6b2
AlliBalliBaba Removes unnecessary log.
e795c869
AlliBalliBaba Adds frankenphp admin api.
68fa1240
AlliBalliBaba Allows booting threads at runtime.
b6cbfae3
AlliBalliBaba Adds proper admin status codes and tests.
f1852792
AlliBalliBaba Makes config smaller.
ea0a4fe3
AlliBalliBaba Adds max threads option and debug status.
fcb5f8c1
AlliBalliBaba Adds test with debug message.
a43ecbe3
AlliBalliBaba Formatting and comments.
b117bff4
AlliBalliBaba Changes Unpin() logic as suggested by @withinboredom
ef1bd0d9
AlliBalliBaba Allows scaling regular threads.
8cd90615
AlliBalliBaba Only allows POST requests.
9e8d8f03
AlliBalliBaba Adds suggestions by @dunglas and resolves TODO.
a8a45450
AlliBalliBaba Makes restarts fully safe.
23a63622
AlliBalliBaba Merge branch 'refactor/start-worker-threads-directly' into feat/worke…
62224bf9
AlliBalliBaba Will make the initial startup fail even if the watcher is enabled (as…
18e3e587
AlliBalliBaba Also adds compareAndSwap to the test.
3672c60f
AlliBalliBaba Adds comment.
38f87b7b
AlliBalliBaba Merge branch 'refactor/start-worker-threads-directly' into feat/worke…
96265d3c
AlliBalliBaba Prevents panic on initial watcher startup.
d97ebfe1
AlliBalliBaba Merge branch 'refactor/start-worker-threads-directly' into feat/worke…
950a5092
AlliBalliBaba Cleans up admin endpoints.
5f1ec1f0
AlliBalliBaba Fixes admin test.
7c61dfac
AlliBalliBaba Boots a thread in a test.
2af993e0
AlliBalliBaba Sets more explicit max_threads.
547139f1
AlliBalliBaba Adjusts naming.
c8bf1ecc
AlliBalliBaba Adds docs.
7f2b94e4
AlliBalliBaba Changes logic to actually terminate the thread.
df782541
AlliBalliBaba Removes the test's randomness.
ec0bc0f4
AlliBalliBaba Adds comments.
8f104070
AlliBalliBaba Adds comments.
91c324de
AlliBalliBaba Scaling v1.
ff06bd77
AlliBalliBaba Scaling v2.
50ba1061
AlliBalliBaba Allows regular thread scaling.
bfe3de1c
AlliBalliBaba Refactors wait-time.
e9f62b93
AlliBalliBaba Explicitly requires setting max_threads.
21949ddb
AlliBalliBaba Removes redundant check.
39a7fc9d
AlliBalliBaba Removes unnecessary import.
442a558e
AlliBalliBaba Records clock time.
c213fc9e
AlliBalliBaba Saves CPU metrics of last 100 requests.
58daaa55
AlliBalliBaba Integrates CPU tracking.
14925f6b
AlliBalliBaba Replaces clock with probing.
d408bdd2
AlliBalliBaba fmt.
8fc3293c
AlliBalliBaba Adds autoscale tests.
03142478
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
bd4af113
AlliBalliBaba Merges main.
dc10546b
AlliBalliBaba Fixes alpine (probably)
3b9f5774
AlliBalliBaba Fixes alpine (definitely)
790ce4ed
AlliBalliBaba go fmt
29de62af
AlliBalliBaba
dunglas
AlliBalliBaba Removes unnecessary 'isProtected'
b4474126
dunglas dunglas marked this pull request as ready for review 1 year ago
AlliBalliBaba Adds perf tests.
6fa90d65
AlliBalliBaba Adds request status message to thread debug status.
3bd7c76b
AlliBalliBaba Adjusts performance tests.
45cd915c
AlliBalliBaba Adds an exponential backoff on request overflow.
af404706
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
d5e8f86a
AlliBalliBaba changes dir.
c7acb255
AlliBalliBaba
AlliBalliBaba Linting and formatting.
8c22cbf1
AlliBalliBaba Linting and formatting.
745b29bc
AlliBalliBaba Adds explicit scaling tests.
68ae2e4d
AlliBalliBaba Adjusts perf tests.
09a5caf8
AlliBalliBaba Uses different worker in removal test.
3cfcb117
AlliBalliBaba More formatting fixes.
cbe45fc4
AlliBalliBaba Replaces inline errors and adjusts comments.
1d8e9735
AlliBalliBaba Formatting.
bf48b145
AlliBalliBaba Formatting.
4f0cc8a9
AlliBalliBaba Formatting.
d483baff
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
d222520f
AlliBalliBaba
withinboredom
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
48079470
dunglas
dunglas commented on 2024-12-23
AlliBalliBaba Implements suggestions by @dunglas.
eef7815d
AlliBalliBaba Adds note.
601a43a0
AlliBalliBaba Formatting.
971e1dcf
withinboredom suggestion: Refactor scaling strategy (#1289)
f4f95762
AlliBalliBaba Merge branch 'feat/auto-scale-clock-time' of https://github.com/dungl…
6ec9ad9d
AlliBalliBaba Resets strategy and fixes tests.
5282e320
AlliBalliBaba Adds scaling strategies.
83d8c11f
AlliBalliBaba Fixes test reloading.
c0946800
AlliBalliBaba
AlliBalliBaba Prevents threads from respawning after shutdown.
3ba080ab
AlliBalliBaba Adjusts transition tests.
7934b50a
AlliBalliBaba
dunglas
Toflar
AlliBalliBaba
withinboredom
AlliBalliBaba Simplifies scaling.
eb5e76d5
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
f33aaad6
AlliBalliBaba Shows the original request path in debug status.
5f70afb7
dunglas
AlliBalliBaba Adds automatic thread limit calculation.
9dcc2cda
AlliBalliBaba Properly forwards automatic max threads.
ed90b754
AlliBalliBaba
AlliBalliBaba Adds ini overrides.
d047149b
AlliBalliBaba Adds Caddy php ini directive (for testing)
5bdd50c1
AlliBalliBaba Adds explicit nil check
936556b4
AlliBalliBaba Adds php.ini override test.
67589034
AlliBalliBaba Fixes linting and conversions.
548d095c
AlliBalliBaba Fixes fuzzing tests.
2761d9cc
AlliBalliBaba clang-format
36d3f54e
AlliBalliBaba Checks for original request existence on debug status.
cd5c905b
AlliBalliBaba Changes the memory calculation implementation
98f22795
AlliBalliBaba Renames var.
a16de66e
AlliBalliBaba Reduces the stall-time.
6a6d040d
AlliBalliBaba Adjusts scaling logic and comments.
83e0c080
AlliBalliBaba Swaps to unix sys package.
79447b84
AlliBalliBaba Only supports CPU probing on unix and SysMemory on Linux.
0545e1b3
AlliBalliBaba Adjusts timers and passes the main thread directly to scaling.
615662e1
AlliBalliBaba
AlliBalliBaba Properly overrides ini settings on startup.
618345b6
AlliBalliBaba clang-format
a8b2c7c9
AlliBalliBaba Adds php_ini error.
9e4a9ca1
AlliBalliBaba Adds ini config.
ca20704c
AlliBalliBaba Moves ini overrides to #else.
3e20e8f6
AlliBalliBaba Adds some max_threads docs.
7ce4c09c
AlliBalliBaba Shows special debug message if in-between worker requests.
2b1427b8
AlliBalliBaba Refactors ini overrides.
d3df9f99
AlliBalliBaba formatting.
1df0c9b5
AlliBalliBaba Changes TODO.
e51c07d5
AlliBalliBaba trigger
d43f6f08
AlliBalliBaba linting
9c1c8a8c
AlliBalliBaba Resets Caddyfile.
825735a8
AlliBalliBaba
AlliBalliBaba AlliBalliBaba requested a review from dunglas dunglas 1 year ago
AlliBalliBaba AlliBalliBaba requested a review from withinboredom withinboredom 1 year ago
dunglas
dunglas
dunglas commented on 2025-01-15
AlliBalliBaba phpIniOverrides -> phpIni
7de09724
AlliBalliBaba Removes admin endpoints to PUT and DELETE threads.
54b28ac5
AlliBalliBaba Puts MaxThreads for tests back in.
0bba5f69
AlliBalliBaba Uses gomaxprocs instead.
bace48ca
AlliBalliBaba Adjusts docs.
a43d2c04
AlliBalliBaba Uses go's monotonic clock instead.
76144353
AlliBalliBaba
AlliBalliBaba Removes unused func.
32a3129a
AlliBalliBaba Removes old notations.
d1890105
AlliBalliBaba Locks the thread handler on debug status.
32517fec
AlliBalliBaba Locks the thread handler on debug status.
1d899dba
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
9a83ab1c
dunglas
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
b3fd7568
AlliBalliBaba go fmt
e3d38b5e
AlliBalliBaba Makes scale chan nil if scaling is not active.
755551a9
AlliBalliBaba locks before modification.
21353547
AlliBalliBaba Fixes race condition on restarts in tests.
69597ef5
AlliBalliBaba
withinboredom
AlliBalliBaba
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
57a13439
AlliBalliBaba Resets the opcache more safely.
16e8169b
AlliBalliBaba trigger build
c038273f
AlliBalliBaba Starts all threads as inactive.
064a3684
AlliBalliBaba Properly removes autoscaled threads.
60b437f3
AlliBalliBaba Fix.
4a5cfd1e
AlliBalliBaba Marks a single thread to call opcache_reset.
954ac9e7
AlliBalliBaba Marks a single thread to call opcache_reset.
3085a65f
AlliBalliBaba Resets opcache_reset logic.
a1f89e3c
AlliBalliBaba
AlliBalliBaba Downloads specific watcher version.
6544a73d
AlliBalliBaba
furan917
AlliBalliBaba
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
7a4aab2b
AlliBalliBaba Fixes linting.
46681127
AlliBalliBaba Fixes linting.
1b945f7c
dunglas
dunglas requested changes on 2025-02-05
AlliBalliBaba Adds suggestions by @dunglas.
deec7eed
AlliBalliBaba Removes linux tag.
a9b1f44e
AlliBalliBaba Fixes linting.
a8ea845a
AlliBalliBaba Turns the debug state into json.
4e03be1d
AlliBalliBaba
AlliBalliBaba commented on 2025-02-06
AlliBalliBaba Adds php.ini block notation.
8325a4af
AlliBalliBaba Adds loglevel check.
9801f24f
AlliBalliBaba Removes sleep.
7adc4659
AlliBalliBaba
AlliBalliBaba AlliBalliBaba requested a review from dunglas dunglas 1 year ago
AlliBalliBaba Adjusts test to work without opcache.
9560e9f6
AlliBalliBaba Removes unnecessary bool.
aaceaa88
AlliBalliBaba Adds more experimental warnings.
96c34b44
AlliBalliBaba Removes request locking.
319f61c4
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
b72df136
AlliBalliBaba
IndraGunawan
IndraGunawan commented on 2025-02-18
dunglas
dunglas
dunglas approved these changes on 2025-02-18
withinboredom
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
7ff63228
AlliBalliBaba
AlliBalliBaba Merge branch 'main' into feat/auto-scale-clock-time
4bf5b9bc
AlliBalliBaba AlliBalliBaba merged 072151df into main 1 year ago
AlliBalliBaba AlliBalliBaba deleted the feat/auto-scale-clock-time branch 1 year ago

Login to write a write a comment.

Login via GitHub

Assignees
No one assigned
Labels
Milestone