[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130731020928.GA27570@kernel.org>
Date: Wed, 31 Jul 2013 10:09:28 +0800
From: Shaohua Li <shli@...nel.org>
To: Tomoki Sekiyama <tomoki.sekiyama@....com>
Cc: linux-kernel@...r.kernel.org, axboe@...nel.dk, tj@...nel.org,
seiji.aguchi@....com
Subject: Re: [RFC PATCH] cfq-iosched: limit slice_idle when many busy queues
are in idle window
On Tue, Jul 30, 2013 at 03:30:33PM -0400, Tomoki Sekiyama wrote:
> Hi,
>
> When some application launches several hundreds of processes that issue
> only a few small sync I/O requests, CFQ may cause heavy latencies
> (10+ seconds at the worst case), although the request rate is low enough for
> the disk to handle it without waiting. This is because CFQ waits for
> slice_idle (default:8ms) every time before processing each request, until
> their thinktimes are evaluated.
>
> This scenario can be reproduced using fio with parameters below:
> fio -filename=/tmp/test -rw=randread -size=5G -runtime=15 -name=file1 \
> -bs=4k -numjobs=500 -thinktime=1000000
> In this case, 500 processes issue a random read request every second.
For this workload CFQ should perfectly detect it's a seek queue and disable
idle. I suppose the reason is CFQ hasn't enough data/time to disable idle yet,
since your thinktime is long and runtime is short.
I thought the real problem here is cfq_init_cfqq() shouldn't set idle_window
when initializing a queue. We should enable idle window after we detect the
queue is worthy idle.
Thanks,
Shaohua
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists