Set default bitmap-chunksize for internal bitmaps to at least 64Meg
A small bitmap-chunksize hurts performance without helping resync speed much - particularly on internal bitmaps. So set the default to at least 64Meg. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
ff94fb86fd
commit
b8ab2a50ab
4
mdadm.8
4
mdadm.8
|
@ -614,8 +614,8 @@ When using a file based bitmap, the default is to use the smallest
|
|||
size that is at-least 4 and requires no more than 2^21 chunks.
|
||||
When using an
|
||||
.B internal
|
||||
bitmap, the chunksize is automatically determined to make best use of
|
||||
available space.
|
||||
bitmap, the chunksize defaults to 64Meg, or larger if necessary to
|
||||
fit the bitmap into the available space.
|
||||
|
||||
.TP
|
||||
.BR \-W ", " \-\-write\-mostly
|
||||
|
|
9
super0.c
9
super0.c
|
@ -970,9 +970,14 @@ static int add_internal_bitmap0(struct supertype *st, int *chunkp,
|
|||
min_chunk *= 2;
|
||||
bits = (bits+1)/2;
|
||||
}
|
||||
if (chunk == UnSet)
|
||||
if (chunk == UnSet) {
|
||||
/* A chunk size less than a few Megabytes gives poor
|
||||
* performance without increasing resync noticeably
|
||||
*/
|
||||
chunk = min_chunk;
|
||||
else if (chunk < min_chunk)
|
||||
if (chunk < 64*1024*1024)
|
||||
chunk = 64*1024*1024;
|
||||
} else if (chunk < min_chunk)
|
||||
return 0; /* chunk size too small */
|
||||
|
||||
sb->state |= (1<<MD_SB_BITMAP_PRESENT);
|
||||
|
|
9
super1.c
9
super1.c
|
@ -1501,9 +1501,14 @@ add_internal_bitmap1(struct supertype *st,
|
|||
min_chunk *= 2;
|
||||
bits = (bits+1)/2;
|
||||
}
|
||||
if (chunk == UnSet)
|
||||
if (chunk == UnSet) {
|
||||
/* For practical purpose, 64Meg is a good
|
||||
* default chunk size for internal bitmaps.
|
||||
*/
|
||||
chunk = min_chunk;
|
||||
else if (chunk < min_chunk)
|
||||
if (chunk < 64*1024*1024)
|
||||
chunk = 64*1024*1024;
|
||||
} else if (chunk < min_chunk)
|
||||
return 0; /* chunk size too small */
|
||||
if (chunk == 0) /* rounding problem */
|
||||
return 0;
|
||||
|
|
|
@ -7,7 +7,7 @@ check wait
|
|||
testdev $md0 1 $mdsize1 1
|
||||
|
||||
#mdadm -E $dev1
|
||||
mdadm --grow $md0 --bitmap=internal --delay=1 || { mdadm -X $dev2 ; exit 1; }
|
||||
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1 || { mdadm -X $dev2 ; exit 1; }
|
||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||
sleep 4
|
||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||
|
|
|
@ -7,7 +7,7 @@ check wait
|
|||
testdev $md0 1 $mdsize1b 1
|
||||
|
||||
#mdadm -E $dev1
|
||||
mdadm --grow $md0 --bitmap=internal --delay=1
|
||||
mdadm --grow $md0 --bitmap=internal --bitmap-chunk=4 --delay=1
|
||||
dirty1=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||
sleep 4
|
||||
dirty2=`mdadm -X $dev2 | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# create a raid1 with an internal bitmap
|
||||
#
|
||||
mdadm --create -e0.90 --run $md0 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
|
||||
mdadm --create -e0.90 --run $md0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2
|
||||
check wait
|
||||
testdev $md0 1 $mdsize0 1
|
||||
mdadm -S $md0
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# create a raid1 with an internal bitmap
|
||||
#
|
||||
mdadm --create --run $md0 --metadata=1.0 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
|
||||
mdadm --create --run $md0 --metadata=1.0 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2
|
||||
check wait
|
||||
check bitmap
|
||||
testdev $md0 1 $mdsize1b 1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# create a raid1 with an internal bitmap
|
||||
#
|
||||
mdadm --create --run $md0 --metadata=1.1 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
|
||||
mdadm --create --run $md0 --metadata=1.1 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2
|
||||
check wait
|
||||
check bitmap
|
||||
testdev $md0 1 $mdsize11 1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# create a raid1 with an internal bitmap
|
||||
#
|
||||
mdadm --create --run $md0 --metadata=1.2 --level=1 -n2 --delay=1 --bitmap internal $dev1 $dev2
|
||||
mdadm --create --run $md0 --metadata=1.2 --level=1 -n2 --delay=1 --bitmap internal --bitmap-chunk 4 $dev1 $dev2
|
||||
check wait
|
||||
check bitmap
|
||||
testdev $md0 1 $mdsize12 1
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# Then do some IO first. Resync should still be very fast
|
||||
#
|
||||
|
||||
mdadm -CR $md0 -l1 -n2 -binternal -d1 $dev1 $dev2
|
||||
mdadm -CR $md0 -l1 -n2 -binternal --bitmap-chunk=4 -d1 $dev1 $dev2
|
||||
check resync
|
||||
check wait
|
||||
testdev $md0 1 $mdsize1 1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# create a raid1 with an internal bitmap
|
||||
#
|
||||
mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap internal $dev1 $dev2 $dev3
|
||||
mdadm --create --run $md0 --level=5 -n3 --delay=1 --bitmap internal --bitmap-chunk=4 $dev1 $dev2 $dev3
|
||||
check wait
|
||||
testdev $md0 2 $mdsize1 512
|
||||
mdadm -S $md0
|
||||
|
|
|
@ -57,7 +57,7 @@ fi
|
|||
mdadm -S /dev/md0
|
||||
|
||||
# Internal bitmaps too.
|
||||
mdadm -CR --assume-clean -b internal $md0 -l5 -n3 $dev0 $dev1 $dev2
|
||||
mdadm -CR --assume-clean -b internal --bitmap-chunk 4 $md0 -l5 -n3 $dev0 $dev1 $dev2
|
||||
mdadm -S /dev/md0
|
||||
mdadm -A /dev/md0 --update=uuid --uuid=0123456789abcdef:fedcba9876543210 $dev0 $dev1 $dev2
|
||||
no_errors
|
||||
|
@ -69,7 +69,7 @@ mdadm -X $dev0 | grep -s > /dev/null 01234567:89abcdef:fedcba98:76543210 || {
|
|||
}
|
||||
mdadm -S /dev/md0
|
||||
|
||||
mdadm -CR --assume-clean -e1.2 -b internal $md0 -l5 -n3 $dev0 $dev1 $dev2
|
||||
mdadm -CR --assume-clean -e1.2 -b internal --bitmap-chunk=4 $md0 -l5 -n3 $dev0 $dev1 $dev2
|
||||
mdadm -S /dev/md0
|
||||
mdadm -A /dev/md0 --update=uuid --uuid=0123456789abcdef:fedcba9876543210 $dev0 $dev1 $dev2
|
||||
no_errors
|
||||
|
|
|
@ -8,7 +8,7 @@ testdev $md0 1 $mdsize1 1
|
|||
|
||||
mdadm -S $md0
|
||||
|
||||
mdadm -CR $md0 -l1 -n3 --write-behind --bitmap=internal $dev0 $dev1 --write-mostly $dev2
|
||||
mdadm -CR $md0 -l1 -n3 --write-behind --bitmap=internal --bitmap-chunk=4 $dev0 $dev1 --write-mostly $dev2
|
||||
testdev $md0 1 $mdsize1 1
|
||||
mdadm -S $md0
|
||||
|
||||
|
|
Loading…
Reference in New Issue