Tejun Heo <tj@xxxxxxxxxx> writes: > Hello, Toke. > > On Fri, Jun 14, 2019 at 02:17:45PM +0200, Toke Høiland-Jørgensen wrote: >> One question: How are equal-weight cgroups scheduled relative to each >> other? Or requests from different processes within a single cgroup for >> that matter? FIFO? Round-robin? Something else? > > Once each cgroup got their hierarchical weight and current vtime for > the period, they don't talk to each other. Each is expected to do the > right thing on their own. When the period ends, the timer looks at > how the device is performing, how much each used and so on and then > make necessary adjustments. So, there's no direct cross-cgroup > synchronization. Each is throttled to their target level > independently. Right, makes sense. > Within a single cgroup, the IOs are FIFO. When an IO has enough vtime > credit, it just passes through. When it doesn't, it always waits > behind any other IOs which are already waiting. OK. Is there any fundamental reason why requests from individual processes could not be interleaved? Or does it just not give the same benefits in an IO request context as it does for network packets? Thanks for the explanations! :) -Toke