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?