Hi flashbench-results.
I'm trying to get the most from a Samsung 32Gb SDHC Class10 card.
I've run a flashbench (compiled for x86) on a Asus Eee PC 901.
I'm posting the results as an attached file to this message.
I guess the page size is 16Kb, but not sure about erase block. What do you think?
Strangely the 4 Mb boundary is faster than bigger boundaries.
Regards
On Wednesday 07 March 2012, Santiago Castillo Oli wrote:
Hi flashbench-results.
I'm trying to get the most from a Samsung 32Gb SDHC Class10 card.
I've run a flashbench (compiled for x86) on a Asus Eee PC 901.
I'm posting the results as an attached file to this message.
I guess the page size is 16Kb, but not sure about erase block. What do you think?
Strangely the 4 Mb boundary is faster than bigger boundaries.
Hi Santiago,
Sorry for the late reply on this.
I think I've seen two of these cards and they seem to be very interesting in their behavior. The solution to the erase block size question was 6 MB in both cases. You could run flashbench -a --blocksize=3072 to test multiples of 3 here.
If you have a laptop with integrated mmc controller (device shows up as mmcblk0, not sdX), can you post the results of "head /sys/mmcblk0/device/*"? Also, is this a microSDHC or full size SDHC card? I've only tested the micro variation. Also, is it the "plus" series (MB-SPBGA) or the "essential" (MB-SSBGA) version?
I have tested two "essential" microSDHC 32GB (MB-MSBGA) and one "plus" SDHC 8GB (MB-SP8GA). The microSDHC interestingly could support up to 30 (!) erase blocks concurrently being written to, which is better than any other SDHC card I've encountered. I had to make some modifications to flashbench to actually measure that.
The 8 GB "plus" card was also pretty good at 7 erase blocks of 4MB.
Arnd
Hi!
Sorry for the late reply, but the card was inside a camcorder and couldn't test until today.
I tried flashbench -a --blocksize=3072 and this was what i get.
------x8------x8------x8------x8------x8------x8------x8 ./flashbench -a --blocksize=3072 /dev/sdc align 6442450944 pre 727µs on 1.13ms post 798µs diff 366µs align 3221225472 pre 734µs on 1.1ms post 752µs diff 357µs align 1610612736 pre 781µs on 1.25ms post 771µs diff 472µs align 805306368 pre 759µs on 1.26ms post 770µs diff 495µs align 402653184 pre 738µs on 1.24ms post 777µs diff 484µs align 201326592 pre 754µs on 1.24ms post 790µs diff 473µs align 100663296 pre 769µs on 1.24ms post 756µs diff 475µs align 50331648 pre 795µs on 1.23ms post 790µs diff 438µs align 25165824 pre 757µs on 1.26ms post 785µs diff 494µs align 12582912 pre 778µs on 1.22ms post 792µs diff 437µs align 6291456 pre 789µs on 1.27ms post 789µs diff 482µs align 3145728 pre 773µs on 1.27ms post 796µs diff 482µs align 1572864 pre 776µs on 1.22ms post 819µs diff 422µs align 786432 pre 760µs on 1.22ms post 834µs diff 419µs align 393216 pre 757µs on 1.25ms post 771µs diff 483µs align 196608 pre 738µs on 1.25ms post 780µs diff 488µs align 98304 pre 728µs on 1.25ms post 806µs diff 486µs align 49152 pre 804µs on 829µs post 798µs diff 27.9µs align 24576 pre 784µs on 803µs post 795µs diff 13.3µs align 12288 pre 773µs on 806µs post 786µs diff 26.6µs align 6144 pre 786µs on 784µs post 788µs diff -3162ns ------x8------x8------x8------x8------x8------x8------x8
Is it likely to have a 6Mb erase block? what do you think?
I don't have a laptop with integrated mmc, so I can't post that info.
The card is a full size card, not microSDHC, and has MB-SSBGA written on it.
I can confirm the 30 erase blocks, as you can see below
------x8------x8------x8------x8------x8------x8------x8 ./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=2 6MiB 11.6M/s 3MiB 11.7M/s 1.5MiB 11.6M/s 768KiB 11.9M/s 384KiB 11.3M/s 192KiB 11M/s 96KiB 11.2M/s 48KiB 8.85M/s 24KiB 4.99M/s 12KiB 3.45M/s 6KiB 1.85M/s
./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=30 6MiB 11.5M/s 3MiB 11.5M/s 1.5MiB 11.4M/s 768KiB 11M/s 384KiB 10.5M/s 192KiB 9.93M/s 96KiB 8.91M/s 48KiB 7.6M/s 24KiB 4.55M/s 12KiB 3.2M/s 6KiB 1.78M/s
./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=31 6MiB 11.1M/s 3MiB 11.5M/s 1.5MiB 11.4M/s 768KiB 11.1M/s 384KiB 10.6M/s 192KiB 9.54M/s 96KiB 8.27M/s 48KiB 5.87M/s 24KiB 2.69M/s 12KiB 1.45M/s 6KiB 846K/s
------x8------x8------x8------x8------x8------x8------x8
Regards.
El 18/03/12 16:33, Arnd Bergmann escribió:
On Wednesday 07 March 2012, Santiago Castillo Oli wrote:
Hi flashbench-results.
I'm trying to get the most from a Samsung 32Gb SDHC Class10 card.
I've run a flashbench (compiled for x86) on a Asus Eee PC 901.
I'm posting the results as an attached file to this message.
I guess the page size is 16Kb, but not sure about erase block. What do you think?
Strangely the 4 Mb boundary is faster than bigger boundaries.
Hi Santiago,
Sorry for the late reply on this.
I think I've seen two of these cards and they seem to be very interesting in their behavior. The solution to the erase block size question was 6 MB in both cases. You could run flashbench -a --blocksize=3072 to test multiples of 3 here.
If you have a laptop with integrated mmc controller (device shows up as mmcblk0, not sdX), can you post the results of "head /sys/mmcblk0/device/*"? Also, is this a microSDHC or full size SDHC card? I've only tested the micro variation. Also, is it the "plus" series (MB-SPBGA) or the "essential" (MB-SSBGA) version?
I have tested two "essential" microSDHC 32GB (MB-MSBGA) and one "plus" SDHC 8GB (MB-SP8GA). The microSDHC interestingly could support up to 30 (!) erase blocks concurrently being written to, which is better than any other SDHC card I've encountered. I had to make some modifications to flashbench to actually measure that.
The 8 GB "plus" card was also pretty good at 7 erase blocks of 4MB.
Arnd
On Wednesday 28 March 2012, Santiago Castillo Oli wrote:
Hi!
Sorry for the late reply, but the card was inside a camcorder and couldn't test until today.
I tried flashbench -a --blocksize=3072 and this was what i get.
------x8------x8------x8------x8------x8------x8------x8 ./flashbench -a --blocksize=3072 /dev/sdc align 6442450944 pre 727µs on 1.13ms post 798µs diff 366µs align 3221225472 pre 734µs on 1.1ms post 752µs diff 357µs align 1610612736 pre 781µs on 1.25ms post 771µs diff 472µs align 805306368 pre 759µs on 1.26ms post 770µs diff 495µs align 402653184 pre 738µs on 1.24ms post 777µs diff 484µs align 201326592 pre 754µs on 1.24ms post 790µs diff 473µs align 100663296 pre 769µs on 1.24ms post 756µs diff 475µs align 50331648 pre 795µs on 1.23ms post 790µs diff 438µs align 25165824 pre 757µs on 1.26ms post 785µs diff 494µs align 12582912 pre 778µs on 1.22ms post 792µs diff 437µs align 6291456 pre 789µs on 1.27ms post 789µs diff 482µs align 3145728 pre 773µs on 1.27ms post 796µs diff 482µs align 1572864 pre 776µs on 1.22ms post 819µs diff 422µs align 786432 pre 760µs on 1.22ms post 834µs diff 419µs align 393216 pre 757µs on 1.25ms post 771µs diff 483µs align 196608 pre 738µs on 1.25ms post 780µs diff 488µs align 98304 pre 728µs on 1.25ms post 806µs diff 486µs align 49152 pre 804µs on 829µs post 798µs diff 27.9µs align 24576 pre 784µs on 803µs post 795µs diff 13.3µs align 12288 pre 773µs on 806µs post 786µs diff 26.6µs align 6144 pre 786µs on 784µs post 788µs diff -3162ns ------x8------x8------x8------x8------x8------x8------x8
Is it likely to have a 6Mb erase block? what do you think?
No, probably not. It's much more likely to actually be 4MB erase blocks, based on your earlier results, which is good.
I don't have a laptop with integrated mmc, so I can't post that info.
The card is a full size card, not microSDHC, and has MB-SSBGA written on it.
Ok, so it's an essential series still, but full size.
I can confirm the 30 erase blocks, as you can see below
------x8------x8------x8------x8------x8------x8------x8 ./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=2 6MiB 11.6M/s 3MiB 11.7M/s 1.5MiB 11.6M/s 768KiB 11.9M/s 384KiB 11.3M/s 192KiB 11M/s 96KiB 11.2M/s 48KiB 8.85M/s 24KiB 4.99M/s 12KiB 3.45M/s 6KiB 1.85M/s
./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=30 6MiB 11.5M/s 3MiB 11.5M/s 1.5MiB 11.4M/s 768KiB 11M/s 384KiB 10.5M/s 192KiB 9.93M/s 96KiB 8.91M/s 48KiB 7.6M/s 24KiB 4.55M/s 12KiB 3.2M/s 6KiB 1.78M/s
./flashbench -O --erasesize=$[6*1024*1024] --blocksize=$[6*1024] /dev/sdc --open-au-nr=31 6MiB 11.1M/s 3MiB 11.5M/s 1.5MiB 11.4M/s 768KiB 11.1M/s 384KiB 10.6M/s 192KiB 9.54M/s 96KiB 8.27M/s 48KiB 5.87M/s 24KiB 2.69M/s 12KiB 1.45M/s 6KiB 846K/s
------x8------x8------x8------x8------x8------x8------x8
Not a very clear result, but that may be a side effect of trying with the (probably) wrong erase block size. I guess it's still clear enough.
This is really an excellent card!
If you're still motivated to do additional tests, can you retry the above tests with erasesize of 1MB and 4MB? Don't worry about it if you've already started using the card for real stuff again.
Thanks a lot for the data point!
Arnd
Hi!
El 28/03/12 15:25, Arnd Bergmann escribió:
If you're still motivated to do additional tests, can you retry the above tests with erasesize of 1MB and 4MB? Don't worry about it if you've already started using the card for real stuff again.
We're lucky. The card is not in the camcorder, so let's test.
4Mb Erase block
./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[8 *1024] /dev/sdc --open-au-nr=2 4MiB 7.81M/s 2MiB 10.9M/s 1MiB 10.5M/s 512KiB 11M/s 256KiB 11M/s 128KiB 10.3M/s 64KiB 9.73M/s 32KiB 8.09M/s 16KiB 5.2M/s 8KiB 3.08M/s
./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[8 *1024] /dev/sdc --open-au-nr=30 4MiB 11M/s 2MiB 11.2M/s 1MiB 11.2M/s 512KiB 10.7M/s 256KiB 9.97M/s 128KiB 9.12M/s 64KiB 8.5M/s 32KiB 7.28M/s 16KiB 4.92M/s 8KiB 2.92M/s
./flashbench -O --erasesize=$[4 * 1024 * 1024] --blocksize=$[8 *1024] /dev/sdc --open-au-nr=31 4MiB 11.5M/s 2MiB 11.4M/s 1MiB 11.1M/s 512KiB 10.5M/s 256KiB 9.64M/s 128KiB 8.18M/s 64KiB 6.41M/s 32KiB 4.48M/s 16KiB 2.72M/s 8KiB 1.16M/s
1MB Erase block (launched with "time" to show that using --open-au-nr=30 and --open-au-nr=31 takes much longer than --open-au-nr=2
time ./flashbench -O --erasesize=$[1*1024*1024] --blocksize=$[1*1024] /dev/sdc --open-au-nr=2 1MiB 11.9M/s 512KiB 11.1M/s 256KiB 10.7M/s 128KiB 9.93M/s 64KiB 8.72M/s 32KiB 6.66M/s 16KiB 5.3M/s 8KiB 3.15M/s 4KiB 1.46M/s 2KiB 702K/s 1KiB 343K/s
real 0m13.300s user 0m0.204s sys 0m0.524s
time ./flashbench -O --erasesize=$[1*1024*1024] --blocksize=$[1*1024] /dev/sdc --open-au-nr=30 1MiB 11.4M/s 512KiB 11.4M/s 256KiB 10.9M/s 128KiB 10.1M/s 64KiB 9.06M/s 32KiB 7.29M/s 16KiB 5.28M/s 8KiB 2.71M/s 4KiB 1.35M/s 2KiB 683K/s 1KiB 338K/s
real 3m20.017s user 0m0.764s sys 0m5.244s
time ./flashbench -O --erasesize=$[1*1024*1024] --blocksize=$[1*1024] /dev/sdc --open-au-nr=31 1MiB 11.4M/s 512KiB 11.4M/s 256KiB 10.9M/s 128KiB 9.98M/s 64KiB 8.61M/s 32KiB 6.78M/s 16KiB 5.35M/s 8KiB 2.74M/s 4KiB 1.36M/s 2KiB 692K/s 1KiB 340K/s
real 3m25.511s user 0m0.332s sys 0m5.728s
With this results i'm not sure about the 30 erase blocks.
what do you think?
Regards
On Wednesday 28 March 2012, Santiago Castillo Oli wrote:
With this results i'm not sure about the 30 erase blocks.
what do you think?
I think the 4MB test pretty clearly shows that 30 erase blocks is right.
However, I think the erase block size might still be wrong: By default, flashbench just uses every fourth erase block, so if the actual size is 8MB or larger, testing with 31 1MB blocks each 4MB apart will only use 16 erase blocks in the end.
Can you try with the patch below applied? If you use this, you should see the same (drastic) effect that the 4MB test showed for smaller sizes, too.
When you run the test with "--random", you should be able to find out the actual erase block size. E.g. assuming that 8MB is right, you will see the cutoff between 30 and 31 erase blocks when testing 8MB, but between 15 and 16 when testing 16 MB blocks.
Arnd
--- a/flashbench.c +++ b/flashbench.c @@ -538,7 +544,7 @@ static int try_open_au(struct device *dev, unsigned int erasesize, { (random ? O_OFF_RAND : O_OFF_LIN), erasesize / blocksize, -1}, {O_REDUCE, .aggregate = A_AVERAGE}, - {O_OFF_RAND, count, 4 * erasesize}, {O_WRITE_RAND}, + {O_OFF_RAND, count, 192 * erasesize}, {O_WRITE_RAND}, {O_NEWLINE}, {O_END}, {O_END},
flashbench-results@lists.linaro.org