[PATCH v8 06/12] mmc: mmc_test: test to measure how sg_len affect performance
From: Per Forlin <hidden>
Date: 2011-07-01 13:33:21
Also in:
linux-mmc, lkml
On 28 June 2011 10:11, Per Forlin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 <redacted> --- ?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