Hi all,

What about this feature? Provide a method of adjust mmc bounce size through 
menuconfig
or /sys/block/mmcblk0 at run-time. Which one is better?

Do you have any ideas? Thanks for your advice.

________________________________________
From: Liu Qiang-B32616
Sent: Friday, November 04, 2011 4:54 AM
To: linux-mmc@vger.kernel.org
Cc: c...@laptop.org; Li Yang-R58472; Gala Kumar-B11780; Liu Qiang-B32616; Liu 
Qiang-B32616
Subject: [PATCH] [RFC/PATCH] SD/MMC: support adjust bounce buffer size 
dynamically in menuconfig

Improve IO throughput according to different controllers.
Make it configuable in menuconfig. Of course, there is another
implement of adjust bounce buffer size at run-time. Like:
echo 262144 > /sys/block/mmcblk0/device/bouncesz
This will reinit mmc queue when bounce size is changed.
Which is better?

On powerpc platform, 256KiB will get better perfromance than 64KiB.
I used Sandisk Extreme III Class 6, 4G memory card, tested on P1022DS
with IOzone. P1022DS memory is 1GBytes. Filesystem is ext4.
By default, bounce buffer size is 64KiB,
[root@p1022ds root]# iozone -Rab result -i0 -i1 -r64 -n1g -g2g -f /mnt/ff
             KB  reclen   write rewrite    read    reread
        1048576      64   12794   13260    32330    31731
        2097152      64   12301   12382    18213    18239
use 256KiB as bounce buffer size,
[root@p1022ds root]# iozone -Rab result -i0 -i1 -r64 -n1g -g2g -f /mnt/ff
             KB  reclen   write rewrite    read    reread
        1048576      64   18533   19076    22841    23151
        2097152      64   17744   17980    18333    18342

Signed-off-by: Qiang Liu <qiang....@freescale.com>
---
 drivers/mmc/card/Kconfig |    9 +++++++++
 drivers/mmc/card/queue.c |    2 +-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/card/Kconfig b/drivers/mmc/card/Kconfig
index 3b1f783..3390154 100644
--- a/drivers/mmc/card/Kconfig
+++ b/drivers/mmc/card/Kconfig
@@ -50,6 +50,15 @@ config MMC_BLOCK_BOUNCE

          If unsure, say Y here.

+config MMC_QUEUE_BOUNCESZ
+       int "MMC memory card bounce buffer size"
+       depends on MMC_BLOCK_BOUNCE
+       range 512 4194304
+       default "65536"
+       help
+         Provide a flexible method to adjust bounce buffer size to
+         improve the throughput according to different controller.
+
 config SDIO_UART
        tristate "SDIO UART/GPS class support"
        help
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index dcad59c..590723f 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -20,7 +20,7 @@
 #include <linux/mmc/host.h>
 #include "queue.h"

-#define MMC_QUEUE_BOUNCESZ     65536
+#define MMC_QUEUE_BOUNCESZ     CONFIG_MMC_QUEUE_BOUNCESZ

 #define MMC_QUEUE_SUSPENDED    (1 << 0)

--
1.6.4


--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to