Re: [RFC PATCH 0/3] cgroup: fsio throttle controller
From: Andrea Righi <hidden>
Date: 2019-01-18 11:10:14
Also in:
cgroups, lkml
On Fri, Jan 18, 2019 at 12:04:17PM +0100, Paolo Valente wrote:
quoted
Il giorno 18 gen 2019, alle ore 11:31, Andrea Righi [off-list ref] ha scritto: This is a redesign of my old cgroup-io-throttle controller: https://lwn.net/Articles/330531/ I'm resuming this old patch to point out a problem that I think is still not solved completely. = Problem = The io.max controller works really well at limiting synchronous I/O (READs), but a lot of I/O requests are initiated outside the context of the process that is ultimately responsible for its creation (e.g., WRITEs). Throttling at the block layer in some cases is too late and we may end up slowing down processes that are not responsible for the I/O that is being processed at that level. = Proposed solution = The main idea of this controller is to split I/O measurement and I/O throttling: I/O is measured at the block layer for READS, at page cache (dirty pages) for WRITEs, and processes are limited while they're generating I/O at the VFS level, based on the measured I/O.Hi Andrea, what the about the case where two processes are dirtying the same pages? Which will be charged? Thanks, Paolo
Hi Paolo, in this case only the first one will be charged for the I/O activity (the one that changes a page from clean to dirty). This is probably not totally fair in some cases, but I think it's a good compromise, at the end rewriting the same page over and over while it's already dirty doesn't actually generate I/O activity, until the page is flushed back to disk. Obviously I'm open to other better ideas and suggestions. Thanks! -Andrea