On Mon, Aug 31, 2015 at 4:21 AM, Ma, Jianpeng <[email protected]> wrote:
> Ilya
> I modify kernel code. The patch like this:
> [root@dev linux]# git diff
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index bc67a93..e4c4ea9 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -55,7 +55,7 @@
> * universally 512 bytes. These symbols are just slightly more
> * meaningful than the bare numbers they represent.
> */
> -#define SECTOR_SHIFT 9
> +#define SECTOR_SHIFT 12
> #define SECTOR_SIZE (1ULL << SECTOR_SHIFT)
>
> /*
> @@ -3811,6 +3811,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
> blk_queue_io_min(q, segment_size);
> blk_queue_io_opt(q, segment_size);
>
> + blk_queue_physical_block_size(q, SECTOR_SIZE);
> /* enable the discard support */
> queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q);
> q->limits.discard_granularity = segment_size;
>
> I don't know the exact why this can decrease the time.
Well, that's the answer ;) set_capacity()'s @size is always in 512
byte sectors, and it's called as follows in rbd:
set_capacity(rbd_dev->disk, rbd_dev->mapping.size / SECTOR_SIZE);
By changing the SECTOR_SIZE from 512 to 4096 (i.e. by a factor of 8)
you just shrink the block device by the same factor. What used to be
a 2T mapping would now be a 256G mapping, and since the amount of data
mkfs.xfs has to write is proportional to the size of the device, your
7 times decrease in time is easily explained by an 8 times decrease in
size of the mapping.
>
> For the -b of mkfs.xfs, I try for 65536. But it don't change any.
Right.
Thanks,
Ilya
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html