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@xxxxxxxxxxxxxxx Cc: cjb@xxxxxxxxxx; 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.liu@xxxxxxxxxxxxx> --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html