Linux on Emmc Optimizing for Performance Ken Tough Principal Engineer [email protected]

Linux on Emmc Optimizing for Performance Ken Tough Principal Engineer Ktough@Intrinsyc.Com

Linux on eMMC Intrinsyc Software Optimizing for Performance Ken Tough Principal Engineer [email protected] CONFIDENTIAL INFORMATION What is eMMC? Solid state storage device on MMC bus Chip on PCB NAND flash based CONFIDENTIAL INFORMATION 2 Why eMMC matters Popular on embedded devices Cheap Flexible CONFIDENTIAL INFORMATION 3 eMMC characteristics Fast read access Fast read seek times Acceptable sequential write performance Poor random write performance CONFIDENTIAL INFORMATION 4 Inside MMC Bus MMC Firmware Micro-Controller SRAM Fast Cache Flash Slower NAND Slower NAND Slower NAND Slower NAND Flash Flash Flash Flash (Erase Blocks) (Erase Blocks) (Erase Blocks) (Erase Blocks) CONFIDENTIAL INFORMATION Inside the eMMC NAND flash arranged in pages Controller with temporary storage Wear levelling Free space management CONFIDENTIAL INFORMATION 6 Discard (TRIM) eMMC TRIM command Tells controller what is free TRIM blocks on format CONFIDENTIAL INFORMATION 7 eMMC scenarios Tablets, smart phones with lots of DRAM Netbooks with lots of DRAM Multimedia players, USB memory sticks CONFIDENTIAL INFORMATION 8 eMMC spec performance Typically emphasizes sequential write performance Random accesses hit eMMCs internal pipelines Frequently limited by eMMC’s Random IOPs limit Minimum OP time regardless of OP size Not often data BW limited ~200 IOPs (e.g. 4kB per OP) Analyze application’s eMMC read/writes patterns CONFIDENTIAL INFORMATION 9 Cache is King Alleviates write performance issues Improves read times even further Reduces NAND wear CONFIDENTIAL INFORMATION 10 Areas of Focus User space User User User Filesystem type Filesystem Filesystem Filesystem layout Block Device IO Scheduler Block IO & Cache IO Scheduler MMC bus driver MMC/Block Device EMMC CONFIDENTIAL INFORMATION 11 MMC driver Maximum bandwidth enabled (8-bit, 50MHz) Enable DMA if option Power management Trim / vendor command support Benchmarking Log CONFIDENTIAL INFORMATION 12 Analysis at MMC/Block Level Histogram of chunk sizes 25000 20000 15000 10000 Reader Surfing 5000 Normalized Count Normalized Random 0 1 2 4 8 16 32 64 512 128 256 1024 2048 Sectors per chunk CONFIDENTIAL INFORMATION 13 eMMC Read Times 35 30 25 20 millsec 15 10 5 0 0 200 400 600 800 1000 1200 Read Chunk Size (sectors) CONFIDENTIAL INFORMATION 14 eMMC Write Times 2500 2000 1500 millisec 1000 500 0 0 200 400 600 800 1000 1200 Write Chunk Size (sectors) CONFIDENTIAL INFORMATION 15 Vendor Performance Wide variation in read/write times Big dependency on internal eMMC firmware Power Class support Geometry / technology Trim support CONFIDENTIAL INFORMATION 16 MMC v4 High Priority Interrupt Allows reads to bypass long writes Useful in very specific applications Small RAM Page/Block cache and IO Scheduler Internal eMMC Pipelines blocked anyway Multimedia apps and “long” buffering CONFIDENTIAL INFORMATION 17 Filesystems Focus on write performance Tests run using fsbench (3.0 kernel, OMAP3 aka Nook Color) Various low-level and high-level scenarios modelled EXT4, BTRFS, NILFS2 tested CONFIDENTIAL INFORMATION 18 Filesystem Benchmarks CONFIDENTIAL INFORMATION 19 CONFIDENTIAL INFORMATION 20 CONFIDENTIAL INFORMATION 21 CONFIDENTIAL INFORMATION 22 CONFIDENTIAL INFORMATION 23 EXT4 - a write Journal write (usually ~16K) inode update (usually 4K) Data goes into page cache CONFIDENTIAL INFORMATION 24 BTRFS - a write Update non-sync very fast Sync write puts tree leaves on eMMC Sync write is 4 non-sequential writes CONFIDENTIAL INFORMATION 25 NILFS2 - a write Log structured filesystem Stores the ‘update’ One large (40K+) write Eventually “snapshot” needs flushing Initialization Recovery CONFIDENTIAL INFORMATION 26 EXT4 w/o journal Not too dangerous on embedded systems with battery Good performance due to improved sequentiality CONFIDENTIAL INFORMATION 27 BTRFS If not using a lot of fsync/fdatasync Great large write performance Terrible on small/medium sync writes Good performance on multiple writes CONFIDENTIAL INFORMATION 28 NILFS2 Consistent performance Potentially much faster if eMMC part has fast sequential performance Should theoretically be the fastest :-) CONFIDENTIAL INFORMATION 29 EXT4 with journal If journaling is needed, consider RAM journal device Again RAM journal not as dangerous as you think Better than BTRFS on small/medium sync writes CONFIDENTIAL INFORMATION 30 I/O schedulers CFQ, noop, deadline Results are similar within ~10% range QOS considerations are more important than throughput CONFIDENTIAL INFORMATION 31 Filesystem layout No swap Align partitions to erase block boundaries Extents match erase blocks System design (multiple storage devices) CONFIDENTIAL INFORMATION 32 User space Avoid synchronization on files Avoid sync/fsync/fdatasync/etc Avoid small writes to files, better to buffer Don’t be afraid to read, be afraid to write! CONFIDENTIAL INFORMATION 33 Future Linaro project (www.linaro.org) working on improving eMMC experience eMMC 4.5 brings METADATA CONFIDENTIAL INFORMATION 34 Summary User space User User User Filesystem type Filesystem Filesystem Filesystem layout Block Device IO Scheduler Block IO & Cache IO Scheduler MMC bus driver MMC/Block Device EMMC CONFIDENTIAL INFORMATION 35 Conclusion EXT4 (discard, ram/no journal) is probably your best bet Try out a couple of configurations for the eMMC you are targeting Benchmark per Vendor Avoid writes! :-) CONFIDENTIAL INFORMATION 36 Questions? CONFIDENTIAL INFORMATION 37.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    37 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us