Re: [PATCH 5/5] cfq-iosched: Allow parent cgroup to preempt its child

From: Tejun Heo
Date: Fri Jan 08 2016 - 13:17:56 EST


On Thu, Jan 07, 2016 at 04:28:16PM +0100, Jan Kara wrote:
> From: Jan Kara <jack@xxxxxxxx>
> Currently we don't allow sync workload of one cgroup to preempt sync
> workload of any other cgroup. This is because we want to achieve service
> separation between cgroups. However in cases where cgroup preempting is
> ancestor of the current cgroup, there is no need of separation and
> idling introduces unnecessary overhead. This is hurts for example the
> case when workload is isolated within a cgroup but journalling threads
> are in root cgroup. Simple way to demostrate the issue is using:
> dbench4 -c /usr/share/dbench4/client.txt -t 10 -D /mnt 1
> on ext4 filesystem on plain SATA driver (mounted with barrier=0 to make
> difference more visible). When all processes are in the root cgroup,
> reported throughput is 153.132 MB/sec. When dbench process gets its own
> blkio cgroup, reported throughput drops to 26.1006 MB/sec.
> Fix the problem by making check in cfq_should_preempt() more benevolent
> and allow preemption by ancestor cgroup. This improves the throughput
> reported by dbench4 to 48.9106 MB/sec.
> Signed-off-by: Jan Kara <jack@xxxxxxxx>

Acked-by: Tejun Heo <tj@xxxxxxxxxx>