From: Jens Axboe <axboe@kernel.dk>
To: "Holger Hoffstätte" <holger@applied-asynchrony.com>,
"Jianchao Wang" <jianchao.w.wang@oracle.com>
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] block: kyber: make kyber more friendly with merging
Date: Tue, 22 May 2018 10:20:34 -0600 [thread overview]
Message-ID: <00e5dfd4-d3a2-b008-3d8b-390a788f61c9@kernel.dk> (raw)
In-Reply-To: <163c5760-cf0e-faea-ee4e-ac5d688310fe@applied-asynchrony.com>
On 5/22/18 10:17 AM, Holger Hoffstätte wrote:
> On 05/22/18 16:48, Jianchao Wang wrote:
>> Currently, kyber is very unfriendly with merging. kyber depends
>> on ctx rq_list to do merging, however, most of time, it will not
>> leave any requests in ctx rq_list. This is because even if tokens
>> of one domain is used up, kyber will try to dispatch requests
>> from other domain and flush the rq_list there.
>>
>> To improve this, we setup kyber_ctx_queue (kcq) which is similar
>> with ctx, but it has rq_lists for different domain and build same
>> mapping between kcq and khd as the ctx & hctx. Then we could merge,
>> insert and dispatch for different domains separately. If one domain
>> token is used up, the requests could be left in the rq_list of
>> that domain and maybe merged with following io.
>>
>> Following is my test result on machine with 8 cores and NVMe card
>> INTEL SSDPEKKR128G7
>>
>> fio size=256m ioengine=libaio iodepth=64 direct=1 numjobs=8
>> seq/random
>> +------+---------------------------------------------------------------+
>> |patch?| bw(MB/s) | iops | slat(usec) | clat(usec) | merge |
>> +----------------------------------------------------------------------+
>> | w/o | 606/612 | 151k/153k | 6.89/7.03 | 3349.21/3305.40 | 0/0 |
>> +----------------------------------------------------------------------+
>> | w/ | 1083/616 | 277k/154k | 4.93/6.95 | 1830.62/3279.95 | 223k/3k |
>> +----------------------------------------------------------------------+
>> When set numjobs to 16, the bw and iops could reach 1662MB/s and 425k
>> on my platform.
>>
>> Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
>
> <snip>
>
> This looks great but prevents kyber from being built as module,
> which is AFAIK supposed to work (and works now):
>
> ..
> CC [M] block/kyber-iosched.o
> Building modules, stage 2.
> MODPOST 313 modules
> ERROR: "bio_attempt_back_merge" [block/kyber-iosched.ko] undefined!
> ERROR: "bio_attempt_front_merge" [block/kyber-iosched.ko] undefined!
> ERROR: "bio_attempt_discard_merge" [block/kyber-iosched.ko] undefined!
> ERROR: "blk_try_merge" [block/kyber-iosched.ko] undefined!
> ERROR: "blk_rq_merge_ok" [block/kyber-iosched.ko] undefined!
> ..
>
> It does build fine when compiled in, obviously. :)
It's basically duplicating the contents of blk_attempt_plug_merge().
I would suggest abstracting out the list loop and merge check
into a helper, that could then both be called from kyber and the
plug merge function.
--
Jens Axboe
next prev parent reply other threads:[~2018-05-22 16:20 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-22 14:48 [PATCH] block: kyber: make kyber more friendly with merging Jianchao Wang
2018-05-22 16:17 ` Holger Hoffstätte
2018-05-22 16:20 ` Jens Axboe [this message]
2018-05-22 17:46 ` Jens Axboe
2018-05-22 18:32 ` Holger Hoffstätte
2018-05-23 1:59 ` jianchao.wang
2018-05-22 20:02 ` Omar Sandoval
2018-05-23 1:47 ` jianchao.wang
2018-05-30 8:22 ` Ming Lei
2018-05-30 8:36 ` jianchao.wang
2018-05-30 9:13 ` Ming Lei
2018-05-30 9:20 ` jianchao.wang
2018-05-30 9:44 ` Ming Lei
2018-05-30 14:55 ` jianchao.wang
2018-05-30 14:58 ` Jens Axboe
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=00e5dfd4-d3a2-b008-3d8b-390a788f61c9@kernel.dk \
--to=axboe@kernel.dk \
--cc=holger@applied-asynchrony.com \
--cc=jianchao.w.wang@oracle.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox