All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxim Patlasov <mpatlasov@parallels.com>
To: Ming Lei <ming.lei@canonical.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Dave Kleikamp <dave.kleikamp@oracle.com>,
	Jens Axboe <axboe@kernel.dk>, Zach Brown <zab@zabbo.net>,
	Christoph Hellwig <hch@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Benjamin LaHaise <bcrl@kvack.org>
Subject: Re: [PATCH v2 4/4] block: loop: support to submit I/O via kernel aio based
Date: Thu, 19 Mar 2015 09:37:05 -0700	[thread overview]
Message-ID: <550AFB31.80608@parallels.com> (raw)
In-Reply-To: <CACVXFVOA92wn3MJjDoXQTw+yERLRpFdHnbuZ5zTDJVbc+q2vAQ@mail.gmail.com>

On 03/18/2015 07:57 PM, Ming Lei wrote:
> On Thu, Mar 19, 2015 at 2:28 AM, Maxim Patlasov <mpatlasov@parallels.com> wrote:
>> On 01/13/2015 07:44 AM, Ming Lei wrote:
>>> Part of the patch is based on Dave's previous post.
>>>
>>> This patch submits I/O to fs via kernel aio, and we
>>> can obtain following benefits:
>>>
>>>          - double cache in both loop file system and backend file
>>>          gets avoided
>>>          - context switch decreased a lot, and finally CPU utilization
>>>          is decreased
>>>          - cached memory got decreased a lot
>>>
>>> One main side effect is that throughput is decreased when
>>> accessing raw loop block(not by filesystem) with kernel aio.
>>>
>>> This patch has passed xfstests test(./check -g auto), and
>>> both test and scratch devices are loop block, file system is ext4.
>>>
>>> Follows two fio tests' result:
>>>
>>> 1. fio test inside ext4 file system over loop block
>>> 1) How to run
>>>          - linux kernel base: 3.19.0-rc3-next-20150108(loop-mq merged)
>>>          - loop over SSD image 1 in ext4
>>>          - linux psync, 16 jobs, size 200M, ext4 over loop block
>>>          - test result: IOPS from fio output
>>>
>>> 2) Throughput result:
>>>          -------------------------------------------------------------
>>>          test cases          |randread   |read   |randwrite  |write  |
>>>          -------------------------------------------------------------
>>>          base                |16799      |59508  |31059      |58829
>>>          -------------------------------------------------------------
>>>          base+kernel aio     |15480      |64453  |30187      |57222
>>>          -------------------------------------------------------------
>>
>> Ming, it's important to understand the overhead of aio_kernel_()
>> implementation. So could you please add test results for raw SSD device to
>> the table above next time (in v3 of your patches).
> what aio_kernel_() does is to just call ->read_iter()/->write_iter(),
> so it should not have introduced extra overload.
>
>  From performance view, the effect is only from switching to
> O_DIRECT. With O_DIRECT, double cache can be avoided,
> meantime both page caches and CPU utilization can be decreased.

The way how you reused loop_queue_rq() --> queue_work() functionality 
(added early, by commit b5dd2f604) may affect performance of O_DIRECT 
operations. It can be easily demonstrated on ram-drive, but measurements 
on real storage h/w would be more convincing.

Btw, when you wrote "linux psync, 16 jobs, size 200M, ext4 over loop 
block" -- does it mean that there were 16 threads in userspace 
submitting I/O concurrently? If yes, throughput comparison for a single 
job test would be also useful to look at.

Thanks,
Maxim

  reply	other threads:[~2015-03-19 16:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-13 15:44 [PATCH v2 0/4] block & aio: improve loop with kernel aio Ming Lei
2015-01-13 15:44 ` [PATCH v2 1/4] aio: add aio_kernel_() interface Ming Lei
2015-01-13 15:44   ` Ming Lei
2015-01-25 13:31   ` Christoph Hellwig
2015-01-26 16:18     ` Ming Lei
2015-01-26 16:18       ` Ming Lei
2015-01-26 17:00       ` Christoph Hellwig
2015-01-27 13:57         ` Ming Lei
2015-01-27 17:59       ` Christoph Hellwig
2015-01-27 17:59         ` Christoph Hellwig
2015-01-13 15:44 ` [PATCH v2 2/4] fd/direct-io: introduce should_dirty for kernel aio Ming Lei
2015-01-25 13:34   ` Christoph Hellwig
2015-01-27 16:05     ` Ming Lei
2015-01-13 15:44 ` [PATCH v2 3/4] block: loop: introduce 'use_aio' sysfs file Ming Lei
2015-01-25 13:35   ` Christoph Hellwig
2015-01-27  5:26     ` Ming Lei
2015-01-26 17:57   ` Jeff Moyer
2015-01-13 15:44 ` [PATCH v2 4/4] block: loop: support to submit I/O via kernel aio based Ming Lei
2015-01-25 13:40   ` Christoph Hellwig
2015-03-18 18:28   ` Maxim Patlasov
2015-03-19  2:57     ` Ming Lei
2015-03-19 16:37       ` Maxim Patlasov [this message]
2015-03-20  5:27         ` Ming Lei
2015-01-13 16:23 ` [PATCH v2 0/4] block & aio: improve loop with kernel aio Christoph Hellwig
2015-01-14 10:17   ` Ming Lei

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=550AFB31.80608@parallels.com \
    --to=mpatlasov@parallels.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=bcrl@kvack.org \
    --cc=dave.kleikamp@oracle.com \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ming.lei@canonical.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=zab@zabbo.net \
    /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.