-
Couldn't load subscription status.
- Fork 461
Open
Description
The current I/O scheduler is very task heavy. For example:
- The scheduler thread submits a request by pushing the task into a channel
- The I/O loop pulls this task from the channel and spawns a task to run the I/O
- The I/O task calls into the object store which is often spawning yet another task
There can be 10's of microseconds between notifying a thread and that thread starting up. So in the above example, even if the object store isn't using tasks, we might introduce 20-30 microseconds of latency for each value.
To put this into context, when I was testing a random-access heavy workload, 60% of the latency was due to I/O scheduling inefficiency. This is probably the single biggest performance bottleneck for both 2.0 and 2.1 random access workloads.
Fortunately, fixing it should be a non-breaking change
Metadata
Metadata
Assignees
Labels
No labels