Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-10-22 | Remove move | Nat Goodspeed | |
2024-10-22 | Eliminate meaningless blank line | Nat Goodspeed | |
2024-10-22 | Make llcoro::scheduler log coros that run too long between yields. | Nat Goodspeed | |
Introduce LLCoros::CoroData::mHistogram, a map of cutoff times (bucket breakpoints) with counts of occurrences. The idea is that mHistogram counts how many times the real time taken by a particular coroutine resumption falls into one of those buckets. Initialize the map with guessed buckets; these are set in llcoros.cpp so they can be changed without requiring extensive rebuilds. scheduler::pick_next() now records the timestamp and fiber context just before the fiber manager resumes the next coroutine. If the next pick_next() call reveals that the previous resumption took longer than the minimum bucket breakpoint, it increments the appropriate bucket counter and logs the instance. LLCoros::toplevel() reports nonzero mHistogram entries on coroutine termination. | |||
2024-09-30 | Fix GCC warning about unused _out parameter in LL_DEBUGS | Rye Cogtail | |
2024-09-05 | Fix Windows build errors from develop => release/luau-scripting. | Nat Goodspeed | |
2024-08-28 | Ditch trailing spaces. | Nat Goodspeed | |
2024-08-06 | Introduce a custom coroutine/fiber scheduler to prioritize UI. | Nat Goodspeed | |
The viewer's main thread's main fiber is responsible for coordinating just about everything. With the default round_robin fiber scheduling algorithm, launching too many additional fibers could starve the main fiber, resulting in visible lag. This custom scheduler tracks when it switches to and from the main fiber, and at each context switch, how long it's been since the last time the main fiber ran. If that exceeds a certain timeslice, it jumps the main fiber to the head of the queue and resumes that instead of any other ready fiber. |