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