Hello,
I thought I'd poke about with the eMMC in the Galaxy S4 which I have
here to see if it supported a sufficient number of AUs to be worth
switching to f2fs (I believe you need 7 simultaneous AUs minimum?).
Had a go at determining AUs, but I don't think I'm seeing any
performance drop-off, but not sure if I'm doing something wrong?
Cheers,
Tim.
root@localhost:/# cd /sys/block/mmcblk0/device/ && grep ^ * 2> /dev/null
caps:0x40080f4e
caps2:0x00031927
cid:110100303136473934b0d49cac223006
csd:d00e00320f5903ffffffffff92400024
date:03/1997
enhanced_area_offset:18446744073709551594
enhanced_area_size:4294967274
erase_size:4194304
erase_type:MMC_CAP_ERASE enabled, type DISCARD, SECURE supportable,
Sanitize enabled
fwdate:0x0000000000000000
fwrev:0x0
hwrev:0x0
manfid:0x000011
name:016G94
oemid:0x0100
preferred_erase_size:4194304
serial:0xd49cac22
smart:0x0000000000000000
type:MMC
uevent:DRIVER=mmcblk
uevent:MMC_TYPE=MMC
uevent:MMC_NAME=016G94
uevent:MODALIAS=mmc:block
root@localhost:/# flashbench -a /dev/block/mmcblk0
align 4294967296 pre 458µs on 523µs post 484µs diff 52.3µs
align 2147483648 pre 445µs on 580µs post 501µs diff 107µs
align 1073741824 pre 436µs on 549µs post 488µs diff 87.2µs
align 536870912 pre 419µs on 475µs post 445µs diff 43.6µs
align 268435456 pre 436µs on 497µs post 453µs diff 52.3µs
align 134217728 pre 471µs on 549µs post 532µs diff 48µs
align 67108864 pre 532µs on 562µs post 541µs diff 26.2µs
align 33554432 pre 510µs on 593µs post 549µs diff 63.2µs
align 16777216 pre 645µs on 724µs post 680µs diff 61µs
align 8388608 pre 637µs on 702µs post 663µs diff 52.3µs
align 4194304 pre 767µs on 859µs post 798µs diff 76.3µs
align 2097152 pre 776µs on 841µs post 802µs diff 52.3µs
align 1048576 pre 772µs on 846µs post 798µs diff 61µs
align 524288 pre 776µs on 824µs post 811µs diff 30.5µs
align 262144 pre 789µs on 793µs post 785µs diff 6.54µs
align 131072 pre 789µs on 802µs post 793µs diff 10.9µs
align 65536 pre 802µs on 802µs post 802µs diff 0ns
align 32768 pre 824µs on 820µs post 793µs diff 10.9µs
root@localhost:~# gdisk -l /dev/block/mmcblk0 | egrep '^(Num| 18)'
Number Start (sector) End (sector) Size Code Name
18 5894728 10134087 2.0 GiB 8300 cache
# since I only want to operate on this partition, I'll manually round up
# the start offset of this partition to hit the first erase block (4M
# according to the card) which is in side the start of the partition.
root@localhost:/# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024]
--open-au-nr=2
4MiB 26.8M/s
2MiB 25.8M/s
1MiB 25.1M/s
512KiB 23.5M/s
256KiB 20.5M/s
root@localhost:/# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --erasesize=$[4 * 1024 * 1024] --blocksize=$[256 * 1024]
--open-au-nr=64
4MiB 24.7M/s
2MiB 25.2M/s
1MiB 25.2M/s
512KiB 24.1M/s
256KiB 20M/s
root@localhost:~# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --random --erasesize=$[4 * 1024 * 1024] --blocksize=$[16 *
1024] --open-au-nr=2
4MiB 23.8M/s
2MiB 26.2M/s
1MiB 25M/s
512KiB 24.8M/s
256KiB 19.8M/s
128KiB 15.4M/s
64KiB 11.9M/s
32KiB 13.1M/s
16KiB 9.51M/s
root@localhost:~# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --random --erasesize=$[4 * 1024 * 1024] --blocksize=$[16 *
1024] --open-au-nr=33
4MiB 24.9M/s
2MiB 25.8M/s
1MiB 25.2M/s
512KiB 24.5M/s
256KiB 20M/s
128KiB 15.1M/s
64KiB 11.5M/s
32KiB 12.1M/s
16KiB 8.48M/s
root@localhost:~# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --random --erasesize=$[4 * 1024 * 1024] --blocksize=$[16 *
1024] --open-au-nr=65
4MiB 22.2M/s
2MiB 25.9M/s
1MiB 25.4M/s
512KiB 24.3M/s
256KiB 20.4M/s
128KiB 15.7M/s
64KiB 11.8M/s
32KiB 12.6M/s
16KiB 8.68M/s
root@localhost:~# flashbench /dev/block/mmcblk0p18 --offset 1798144
--open-au --random --erasesize=$[4 * 1024 * 1024] --blocksize=$[16 *
1024] --open-au-nr=1
4MiB 15.8M/s
2MiB 24.1M/s
1MiB 26.4M/s
512KiB 24.3M/s
256KiB 19.3M/s
128KiB 16M/s
64KiB 12M/s
32KiB 13.1M/s
16KiB 9.92M/s
# ... not really sure how to interpret that. Am I wrong in attempting
# to just operate on the partition, with that offset?