mirror of
https://github.com/PaperMC/Folia.git
synced 2025-04-21 11:49:20 +08:00
It turns out, the scheduler is good enough right now - the main bottlenecks to scaling chunk workers is actually the chunk system locking behavior (mostly schedule lock, but ticket lock is there too)
41 lines
1.4 KiB
Plaintext
41 lines
1.4 KiB
Plaintext
Get done before testing:
|
|
|
|
Pre-Test: List of things not fully tested
|
|
- Task queue
|
|
- Teleportations
|
|
- Regioniser
|
|
|
|
Get done after test:
|
|
- global autosave queue
|
|
- game time / day time tick comparison (== is now invalid due to desync of global / region tick)
|
|
- scoreboards
|
|
- vanish api
|
|
- watchdog stuff
|
|
- Spectator teleporting / camera
|
|
- regenerateChunk, isChunkGenerated
|
|
- Conversable...
|
|
- sync load info
|
|
- net.minecraft.commands.Commands
|
|
- are the race conditions in the weather tick (advanceWeatherCycle) ok?
|
|
- make scheduler load chunks better? this requires additional work to:
|
|
-> reduce scheduler overhead (i.e at 5000 regions, on 16 threads -> overhead is 10%)
|
|
-> unsure how to reduce scheduler overhead, may need to rewrite it so that the queues
|
|
are per tick thread and thus it increases parallelism
|
|
-> reduce chunk system overhead (i.e at 20 workers, ~100 unique concurrent regions, overhead -> 10-30% on both workers AND tick threads (at tick threads ->8)
|
|
-> the only way out of the chunk system overhead is to make the scheduling more parallel - it requires scheduling lock and ticket lock
|
|
|
|
Delayed and hopefully will not forget:
|
|
- api for really a lot of shit
|
|
- needs: true async events (i.e fire then complete later)
|
|
- needs: region determination, craft scheduler per region, craft scheduler
|
|
per entity
|
|
- needs: world creation/unload (good god)
|
|
- needs: more???
|
|
- Projectile#getOwner ...
|
|
|
|
Ideas:
|
|
|
|
Issues:
|
|
|
|
To check:
|