All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bough Chen <haibo.chen@nxp.com>
To: Adrian Hunter <adrian.hunter@intel.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Shawn Lin <shawn.lin@rock-chips.com>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
	Alex Lemberg <alex.lemberg@sandisk.com>,
	Mateusz Nowak <mateusz.nowak@intel.com>,
	Yuliy Izrailov <Yuliy.Izrailov@sandisk.com>,
	Jaehoon Chung <jh80.chung@samsung.com>,
	Dong Aisheng <dongas86@gmail.com>,
	Das Asutosh <asutoshd@codeaurora.org>,
	Zhangfei Gao <zhangfei.gao@gmail.com>,
	Sahitya Tummala <stummala@codeaurora.org>,
	Harjani Ritesh <riteshh@codeaurora.org>,
	Venu Byravarasu <vbyravarasu@nvidia.com>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: RE: [PATCH V5 00/13] mmc: Add Command Queue support
Date: Thu, 17 Aug 2017 07:45:16 +0000	[thread overview]
Message-ID: <AM4PR0401MB2324B4E9B0818CCC3D70113090830@AM4PR0401MB2324.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <1502366898-23691-1-git-send-email-adrian.hunter@intel.com>


> -----Original Message-----
> From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc-
> owner@vger.kernel.org] On Behalf Of Adrian Hunter
> Sent: Thursday, August 10, 2017 8:08 PM
> To: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: linux-mmc <linux-mmc@vger.kernel.org>; Bough Chen
> <haibo.chen@nxp.com>; Alex Lemberg <alex.lemberg@sandisk.com>;
> Mateusz Nowak <mateusz.nowak@intel.com>; Yuliy Izrailov
> <Yuliy.Izrailov@sandisk.com>; Jaehoon Chung <jh80.chung@samsung.com>;
> Dong Aisheng <dongas86@gmail.com>; Das Asutosh
> <asutoshd@codeaurora.org>; Zhangfei Gao <zhangfei.gao@gmail.com>;
> Sahitya Tummala <stummala@codeaurora.org>; Harjani Ritesh
> <riteshh@codeaurora.org>; Venu Byravarasu <vbyravarasu@nvidia.com>;
> Linus Walleij <linus.walleij@linaro.org>; Shawn Lin <shawn.lin@rock-chips.com>
> Subject: [PATCH V5 00/13] mmc: Add Command Queue support
> 
> Hi
> 
> Here is V5 of the hardware command queue patches without the software
> command queue patches.
> 
> HW CMDQ offers 25% - 50% better random multi-threaded I/O.  I see a slight 2%
> drop in sequential read speed but no change to sequential write.
> 
> 
Hi Adrian,

I test the performance on the i.MX8.  Here in my side, I use 'dd' to test the
sequential read/write speed, see a slight 3% drop for both read and write.

    ---------------------------------------------
   |               | read (KB/s)| write (KB/s) |
   ---------------------------------------------
    |CMDQ in HS400ES|    257     |     94.5     |
    ---------------------------------------------
    |    HS400ES    |    265     |     96.6     |
    --------------------------------------------- 

For random multi-threaded I/O, I use 'fio'  to test, the test command:
fio -filename=/mnt/test -direct=1 -iodepth 1 -thread -rw=randread - ioengine=psync  -bs=4k -size=2G -numjobs=10 -runtime=60  -group_reporting - name=mytest

I test 5 times, and get the average value.
For CMDQ in HS400ES
    ----------------------------------------------------
    | block size   |    4KB    |    8KB    |    16KB   |
    ----------------------------------------------------
    | random read  | 26340KB/s | 51844KB/s | 85738KB/s |
    ----------------------------------------------------
    | random write | 12691KB/s | 15879KB/s | 17535KB/s |
    ----------------------------------------------------

HS400ES without CMDQ
    ----------------------------------------------------
    | block size   |    4KB    |    8KB    |    16KB   |
    ----------------------------------------------------
    | random read  | 18585KB/s | 35041KB/s | 63880KB/s |
    ----------------------------------------------------
    | random write | 16465KB/s | 19210KB/s | 22672KB/s |
    ----------------------------------------------------

For random write from the test, I find every test value differ greatly no matter enable CMDQ or not.

>From the test, I see CMDQ random read speed increase 34%~48%, but for random write, the speed 
drop 17.4% ~ 33%.  

When you send software cmdq V5 patch, you give some explanation for the random write. But the
average random write speed also drops a lot, I think it is now a good news, which need attention!


Maybe Shawn Lin can double test this random write performance.

Best Regards
Haibo Chen

> Changes since V4:
>       mmc: core: Add mmc_retune_hold_now()
> 	Add explanation to commit message.
>       mmc: host: Add CQE interface
> 	Add comments to callback declarations.
>       mmc: core: Turn off CQE before sending commands
> 	Add explanation to commit message.
>       mmc: core: Add support for handling CQE requests
> 	Add comments as requested by Ulf.
>       mmc: core: Remove unused MMC_CAP2_PACKED_CMD
> 	New patch.
>       mmc: mmc: Enable Command Queuing
> 	Adjust for removal of MMC_CAP2_PACKED_CMD.
> 	Add a comment about Packed Commands.
>       mmc: mmc: Enable CQE's
> 	Remove un-necessary check for MMC_CAP2_CQE
>       mmc: block: Use local variables in mmc_blk_data_prep()
> 	New patch.
>       mmc: block: Prepare CQE data
> 	Adjust due to "mmc: block: Use local variables in
> mmc_blk_data_prep()"
> 	Remove priority setting.
> 	Add explanation to commit message.
>       mmc: cqhci: support for command queue enabled host
> 	Fix transfer descriptor setting in cqhci_set_tran_desc() for 32-bit DMA
> 
> Changes since V3:
> 	Adjusted ...blk_end_request...() for new block status codes
> 	Fixed CQHCI transaction descriptor for "no DCMD" case
> 
> Changes since V2:
> 	Dropped patches that have been applied.
> 	Re-based
> 	Added "mmc: sdhci-pci: Add CQHCI support for Intel GLK"
> 
> Changes since V1:
> 
> 	"Share mmc request array between partitions" is dependent
> 	on changes in "Introduce queue semantics", so added that
> 	and block fixes:
> 
> 	Added "Fix is_waiting_last_req set incorrectly"
> 	Added "Fix cmd error reset failure path"
> 	Added "Use local var for mqrq_cur"
> 	Added "Introduce queue semantics"
> 
> Changes since RFC:
> 
> 	Re-based on next.
> 	Added comment about command queue priority.
> 	Added some acks and reviews.
> 
> 
> Adrian Hunter (12):
>       mmc: core: Add mmc_retune_hold_now()
>       mmc: core: Add members to mmc_request and mmc_data for CQE's
>       mmc: host: Add CQE interface
>       mmc: core: Turn off CQE before sending commands
>       mmc: core: Add support for handling CQE requests
>       mmc: core: Remove unused MMC_CAP2_PACKED_CMD
>       mmc: mmc: Enable Command Queuing
>       mmc: mmc: Enable CQE's
>       mmc: block: Use local variables in mmc_blk_data_prep()
>       mmc: block: Prepare CQE data
>       mmc: block: Add CQE support
>       mmc: sdhci-pci: Add CQHCI support for Intel GLK
> 
> Venkat Gopalakrishnan (1):
>       mmc: cqhci: support for command queue enabled host
> 
>  drivers/mmc/core/block.c          |  238 +++++++-
>  drivers/mmc/core/block.h          |    7 +
>  drivers/mmc/core/bus.c            |    7 +
>  drivers/mmc/core/core.c           |  178 +++++-
>  drivers/mmc/core/host.c           |    6 +
>  drivers/mmc/core/host.h           |    1 +
>  drivers/mmc/core/mmc.c            |   42 +-
>  drivers/mmc/core/queue.c          |  273 ++++++++-
>  drivers/mmc/core/queue.h          |   42 +-
>  drivers/mmc/host/Kconfig          |   14 +
>  drivers/mmc/host/Makefile         |    1 +
>  drivers/mmc/host/cqhci.c          | 1154
> +++++++++++++++++++++++++++++++++++++
>  drivers/mmc/host/cqhci.h          |  240 ++++++++
>  drivers/mmc/host/sdhci-pci-core.c |  153 ++++-
>  include/linux/mmc/core.h          |   18 +-
>  include/linux/mmc/host.h          |   63 +-
>  include/trace/events/mmc.h        |   36 +-
>  17 files changed, 2412 insertions(+), 61 deletions(-)  create mode 100644
> drivers/mmc/host/cqhci.c  create mode 100644 drivers/mmc/host/cqhci.h
> 
> 
> Regards
> Adrian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the
> body of a message to majordomo@vger.kernel.org More majordomo info at
> http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2017-08-17  7:45 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-10 12:08 [PATCH V5 00/13] mmc: Add Command Queue support Adrian Hunter
2017-08-10 12:08 ` [PATCH V5 01/13] mmc: core: Add mmc_retune_hold_now() Adrian Hunter
2017-08-20 11:26   ` Linus Walleij
2017-08-22 11:12   ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 02/13] mmc: core: Add members to mmc_request and mmc_data for CQE's Adrian Hunter
2017-08-20 11:29   ` Linus Walleij
2017-08-21  9:26     ` Adrian Hunter
2017-08-22 11:12   ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 03/13] mmc: host: Add CQE interface Adrian Hunter
2017-08-20 11:31   ` Linus Walleij
2017-08-22 11:13   ` Ulf Hansson
2017-08-23  6:54     ` Adrian Hunter
2017-08-23 12:48       ` Ulf Hansson
2017-08-24  6:53         ` Adrian Hunter
2017-08-24  9:24           ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 04/13] mmc: core: Turn off CQE before sending commands Adrian Hunter
2017-08-20 11:32   ` Linus Walleij
2017-08-22 11:13   ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 05/13] mmc: core: Add support for handling CQE requests Adrian Hunter
2017-08-20 11:39   ` Linus Walleij
2017-08-21  9:26     ` Adrian Hunter
2017-08-31 11:32       ` Linus Walleij
2017-08-22  8:06   ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 06/13] mmc: core: Remove unused MMC_CAP2_PACKED_CMD Adrian Hunter
2017-08-20 11:33   ` Linus Walleij
2017-08-22 11:12   ` Ulf Hansson
2017-08-10 12:08 ` [PATCH V5 07/13] mmc: mmc: Enable Command Queuing Adrian Hunter
2017-08-20 11:33   ` Linus Walleij
2017-08-10 12:08 ` [PATCH V5 08/13] mmc: mmc: Enable CQE's Adrian Hunter
2017-08-20 11:41   ` Linus Walleij
2017-08-10 12:08 ` [PATCH V5 09/13] mmc: block: Use local variables in mmc_blk_data_prep() Adrian Hunter
2017-08-20 11:43   ` Linus Walleij
2017-08-21  9:27     ` Adrian Hunter
2017-08-10 12:08 ` [PATCH V5 10/13] mmc: block: Prepare CQE data Adrian Hunter
2017-08-10 12:08 ` [PATCH V5 11/13] mmc: block: Add CQE support Adrian Hunter
2017-08-20 12:13   ` Linus Walleij
2017-08-21  9:27     ` Adrian Hunter
2017-08-31 10:05       ` Linus Walleij
2017-08-31 10:25       ` Christoph Hellwig
2017-08-31 10:23     ` Christoph Hellwig
2017-08-31 12:00       ` Adrian Hunter
2017-08-10 12:08 ` [PATCH V5 12/13] mmc: cqhci: support for command queue enabled host Adrian Hunter
2017-08-10 12:08 ` [PATCH V5 13/13] mmc: sdhci-pci: Add CQHCI support for Intel GLK Adrian Hunter
2017-08-11 10:33 ` [PATCH V5 00/13] mmc: Add Command Queue support Bough Chen
2017-08-17  7:45 ` Bough Chen [this message]
2017-08-17  8:56   ` Shawn Lin
2017-08-18 11:03   ` Adrian Hunter
2017-08-18 11:06 ` Adrian Hunter
2017-08-22 11:22 ` Ulf Hansson

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=AM4PR0401MB2324B4E9B0818CCC3D70113090830@AM4PR0401MB2324.eurprd04.prod.outlook.com \
    --to=haibo.chen@nxp.com \
    --cc=Yuliy.Izrailov@sandisk.com \
    --cc=adrian.hunter@intel.com \
    --cc=alex.lemberg@sandisk.com \
    --cc=asutoshd@codeaurora.org \
    --cc=dongas86@gmail.com \
    --cc=jh80.chung@samsung.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=mateusz.nowak@intel.com \
    --cc=riteshh@codeaurora.org \
    --cc=shawn.lin@rock-chips.com \
    --cc=stummala@codeaurora.org \
    --cc=ulf.hansson@linaro.org \
    --cc=vbyravarasu@nvidia.com \
    --cc=zhangfei.gao@gmail.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.