[PATCH v8 06/12] mmc: mmc_test: test to measure how sg_len affect performance
Per Forlin
per.forlin at linaro.org
Fri Jul 1 09:33:19 EDT 2011
On 28 June 2011 10:11, Per Forlin <per.forlin at linaro.org> wrote:
> test that measures how the mmc bandwidth depends on the numbers of sg elements
> in the sg list. The transfer size if fixed and sg length goes from a few up
> to 512. The purpose is to measure overhead caused by multiple sg elements.
>
> Signed-off-by: Per Forlin <per.forlin at linaro.org>
> ---
> drivers/mmc/card/mmc_test.c | 151 +++++++++++++++++++++++++++++++++++++++----
> 1 files changed, 139 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
> -static int mmc_test_map_sg(struct mmc_test_mem *mem, unsigned long sz,
> +static int mmc_test_map_sg(struct mmc_test_mem *mem, unsigned long size,
> struct scatterlist *sglist, int repeat,
> unsigned int max_segs, unsigned int max_seg_sz,
> - unsigned int *sg_len)
> + unsigned int *sg_len, int min_sg_len)
> {
> struct scatterlist *sg = NULL;
> unsigned int i;
> + unsigned long sz = size;
>
> sg_init_table(sglist, max_segs);
> + if (min_sg_len > max_segs)
> + min_sg_len = max_segs;
>
> *sg_len = 0;
> do {
> for (i = 0; i < mem->cnt; i++) {
> unsigned long len = PAGE_SIZE << mem->arr[i].order;
>
> + if (min_sg_len && (size / min_sg_len < len))
> + len = size / min_sg_len;
Make aligned to 512
len = ALIGN(size / min_sg_len, 512);
I run into this issue running on arm realview with max test size 128k
instead of 128M.
/Per
More information about the linux-arm-kernel
mailing list