All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>, Shaohua Li <shaohua.li@intel.com>,
	lkml <linux-kernel@vger.kernel.org>,
	Chad Talbott <ctalbott@google.com>,
	Divyesh Shah <dpshah@google.com>
Subject: Re: [PATCH 3/6 v4] cfq-iosched: Introduce vdisktime and io weight for CFQ queue
Date: Mon, 21 Feb 2011 13:55:38 +0800	[thread overview]
Message-ID: <4D61FE5A.5060402@cn.fujitsu.com> (raw)
In-Reply-To: <20110218145432.GA26654@redhat.com>

Vivek Goyal wrote:
> On Fri, Feb 18, 2011 at 02:04:18PM +0800, Gui Jianfeng wrote:
>> Vivek Goyal wrote:
>>> On Thu, Feb 10, 2011 at 03:47:16PM +0800, Gui Jianfeng wrote:
>>>
>>> [..]
>>>> +/*
>>>> + * The time when a CFQ queue is put onto a service tree is recoreded in
>>>> + * cfqq->reposition_time. Currently, we check the first priority CFQ queues
>>>> + * on each service tree, and select the workload type that contains the lowest
>>>> + * reposition_time CFQ queue among them.
>>>> + */
>>>>  static enum wl_type_t cfq_choose_wl(struct cfq_data *cfqd,
>>>>  				struct cfq_group *cfqg, enum wl_prio_t prio)
>>>>  {
>>>>  	struct cfq_entity *cfqe;
>>>> +	struct cfq_queue *cfqq;
>>>> +	unsigned long lowest_start_time;
>>>>  	int i;
>>>> -	bool key_valid = false;
>>>> -	unsigned long lowest_key = 0;
>>>> +	bool time_valid = false;
>>>>  	enum wl_type_t cur_best = SYNC_NOIDLE_WORKLOAD;
>>>>  
>>>> +	/*
>>>> +	 * TODO: We may take io priority and io class into account when
>>>> +	 * choosing a workload type. But for the time being just make use of
>>>> +	 * reposition_time only.
>>>> +	 */
>>>>  	for (i = 0; i <= SYNC_WORKLOAD; ++i) {
>>>> -		/* select the one with lowest rb_key */
>>>>  		cfqe = cfq_rb_first(service_tree_for(cfqg, prio, i));
>>>> -		if (cfqe &&
>>>> -		    (!key_valid || time_before(cfqe->rb_key, lowest_key))) {
>>>> -			lowest_key = cfqe->rb_key;
>>>> +		cfqq = cfqq_of_entity(cfqe);
>>>> +		if (cfqe && (!time_valid ||
>>>> +			     time_before(cfqq->reposition_time,
>>>> +					 lowest_start_time))) {
>>>> +			lowest_start_time = cfqq->reposition_time;
>>> Gui,
>>>
>>> Have you had a chance to run some mixed workloads in a group (some sync,
>>> some async and some sync-idle queues), and see how latency and throughput
>>> of sync-idle workload changes due to this "resposition_time" logic. I 
>>> just want to make sure that latency of sync-noidle workload does not
>>> go up as that's the workload that people care and gets noticed first.
>> Hi Vivek,
>>
>> I made a quick test by using fio. It seems the number changes little
>> between vanilla kernel and patched kernel.
>>
>>
>> Vanilla:    SYNC read            SYNC-NOIDLE read      ASYNC write  
>>          1. 23,640KB/s 5.40 ---- 6,696KB/s 19.07 ---- 50,142KB/s 128.00
>>          2. 24,459KB/s 5.22 ---- 6,775KB/s 18.86 ---- 47,349KB/s 129.89
>>          3. 25,929KB/s 4.93 ---- 7,378KB/s 17.32 ---- 32,350KB/s 131.88
>>
>> Patched:   SYNC read            SYNC-NOIDLE read      ASYNC write  
>>         1. 24,000KB/s 5.32 ---- 6,942KB/s 18.39 ---- 30,860KB/s 135.95
>>         2. 23,678KB/s 5.40 ---- 7,274KB/s 17.58 ---- 67,432KB/s 120.44
>>         3. 23,004KB/s 5.55 ---- 6,621KB/s 19.30 ---- 36,536KB/s 148.64
> 
> Hi Gui,
> 
> Do you also have latency numbers? I am especially interested max completion
> latencies of SYNC-NOIDLE workload.

Vivek,

Here some numbers about latency between vanilla and patched kernel.
I tested 4 times for each. It seems no latency regression happens.

Vanilla:
1. clat (msec): min=1, max=302, avg=18.19, stdev=39.80
2. clat (msec): min=1, max=201, avg=17.76, stdev=31.90
3. clat (msec): min=1, max=303, avg=18.64, stdev=41.30
4. clat (msec): min=1, max=370, avg=17.43, stdev=35.09

Patched:
1. clat (msec): min=1, max=176, avg=19.00, stdev=32.98
2. clat (msec): min=1, max=175, avg=17.75, stdev=32.41
3. clat (msec): min=1, max=191, avg=19.11, stdev=33.28
4. clat (msec): min=1, max=176, avg=17.11, stdev=32.99

Thanks,
Gui

> 
> Thanks
> Vivek
> 

  parent reply	other threads:[~2011-02-21  5:56 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4D51ED26.8050809@cn.fujitsu.com>
2011-02-10  7:46 ` [PATCH 1/6 v4] cfq-iosched: Introduce cfq_entity for CFQ queue Gui Jianfeng
2011-02-10  7:47 ` [PATCH 2/6 v4] cfq-iosched: Introduce cfq_entity for CFQ group Gui Jianfeng
2011-02-10  7:47 ` [PATCH 3/6 v4] cfq-iosched: Introduce vdisktime and io weight for CFQ queue Gui Jianfeng
2011-02-10 19:29   ` Vivek Goyal
2011-02-12  1:20     ` Gui Jianfeng
2011-02-14 16:58       ` Vivek Goyal
2011-02-15  1:53         ` Gui Jianfeng
2011-02-15 14:24           ` Vivek Goyal
2011-02-16  1:06             ` Gui Jianfeng
2011-02-14 18:13   ` Vivek Goyal
2011-02-15  1:46     ` Gui Jianfeng
2011-02-18  6:04     ` Gui Jianfeng
2011-02-18 14:54       ` Vivek Goyal
2011-02-21  1:13         ` Gui Jianfeng
2011-02-21  5:55         ` Gui Jianfeng [this message]
2011-02-21 15:41           ` Vivek Goyal
2011-02-14 23:32   ` Justin TerAvest
2011-02-15  1:44     ` Gui Jianfeng
2011-02-15 14:21       ` Vivek Goyal
2011-02-10  7:47 ` [PATCH 4/6 v4] cfq-iosched: Extract some common code of service tree handling for CFQ queue and CFQ group Gui Jianfeng
2011-02-10  7:47 ` [PATCH 5/6 v4] cfq-iosched: CFQ group hierarchical scheduling and use_hierarchy interface Gui Jianfeng
2011-02-10 20:57   ` Vivek Goyal
2011-02-12  2:21     ` Gui Jianfeng
2011-02-14 18:04       ` Vivek Goyal
2011-02-15  2:38         ` Gui Jianfeng
2011-02-15 14:27           ` Vivek Goyal
2011-02-16  1:44             ` Gui Jianfeng
2011-02-16 14:17               ` Vivek Goyal
2011-02-17  1:22                 ` Gui Jianfeng
2011-02-16 17:22               ` Divyesh Shah
2011-02-16 17:28                 ` Divyesh Shah
2011-02-16 18:06                   ` Vivek Goyal
2011-02-14  3:20     ` Gui Jianfeng
2011-02-14 18:10       ` Vivek Goyal
2011-02-17  0:31   ` Justin TerAvest
2011-02-17  1:21     ` Gui Jianfeng
2011-02-17 17:36       ` Justin TerAvest
2011-02-18  1:14         ` Gui Jianfeng
2011-02-17 10:39     ` Alan Cox
2011-02-10  7:47 ` [PATCH 6/6 v4] blkio-cgroup: Document for blkio.use_hierarchy interface Gui Jianfeng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D61FE5A.5060402@cn.fujitsu.com \
    --to=guijianfeng@cn.fujitsu.com \
    --cc=axboe@kernel.dk \
    --cc=ctalbott@google.com \
    --cc=dpshah@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shaohua.li@intel.com \
    --cc=vgoyal@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.