Internal Storage Performance

by Anand Shimpi

Stock Android deployments use ext4 formatted partitions for OS and user data. The Moto X’s pseudo-stock Android 4.2.2 uses ext4 for all partitions with the exception of user data storage, which uses F2FS (Flash Friendly File System):

/dev/block/platform/msm_sdcc.1/by-name/system /system ext4
/dev/block/platform/msm_sdcc.1/by-name/fsg /fsg ext4
/dev/block/platform/msm_sdcc.1/by-name/customize /customize ext4
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware ext4
/dev/block/platform/msm_sdcc.1/by-name/userdata /data f2fs
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4
/dev/block/platform/msm_sdcc.1/by-name/pds /pds ext3
/sys/kernel/debug /sys/kernel/debug debugfs
/dev/block/platform/msm_sdcc.1/by-name/userdata /mnt/shell/emulated f2fs
/dev/block/platform/msm_sdcc.1/by-name/userdata /storage/emulated/legacy f2fs
/dev/block/dm-0 /mnt/asec/com.cgollner.systemmonitor-1 ext4

As its name implies, F2FS is designed to be better optimized for use on NAND flash based storage - like the integrated eMMC solution used in the Moto X.

Unlike ext4, F2FS is a log-structured file system. A log-structured file system mixes data and log writes together in an attempt to serialize all writes. Ext4, by comparison, is a journaling file system that keeps track of all file system changes in a journal. A centrally located journal basically means all writes end up looking pseudo-random from the perspective of the storage device, since all writes involve writing the actual data as well as updating the journal located somewhere else in storage space. Log-structured file systems attempt to write both data and file system updates sequentially, as a circular log.

The serialization of writes alone is enough to seriously improve performance (look at the ratio of sequential to random write performance on solid state storage), but F2FS also includes some other features that make it very flash friendly. At a high level, F2FS seems to implement many of the same architectural features we see within solid state drives. As long as there’s enough free space, all new writes happen to empty blocks rather than previously used addresses (as a result, real time garbage collection is necessary). There are even similarities down to the underlying organizational structure of F2FS partitions and SSDs, with counterparts existing for flash pages, blocks and planes. Wear leveling obviously isn’t a concern of F2FS, but largely mirroring what happens internally to the eMMC/SSD definitely helps keep performance high. There’s also apparently some file system/storage hardware awareness baked into F2FS as well. TRIM is not only supported, but it appears to be supported on file delete rather than operating as an idle time task as in Android 4.3 with fstrim.

The Moto X uses F2FS on user data partitions, which has tremendous impacts not only on performance but device behavior over time. For starters, the Moto X boasts better random write performance than any other Android device we’ve ever tested:

Random Write (4KB) Performance

My guess is the advantage we’re seeing here has more to do with F2FS serializing log updates rather than Motorola simply implementing better eMMC hardware, although that is still possible as well.

Sequential Write (256KB) Performance

Random Read (4KB) Performance

Sequential Read (256KB) Performance

Sequential speeds are competitive, although random read performance is a bit lower than on the Galaxy S 4. Between Brian’s two review units we have seen the performance of both SanDisk and Toshiba eMMC devices in the Moto X:

Moto X Storage Performance
  Sequential Read Sequential Write Random Read Random Write
SanDisk 16GB 64.34 MB/s 16.26 MB/s 9.95 MB/s 2.92 MB/s
Toshiba 16GB 64.28 MB/s 11.48 MB/s 12.79 MB/s 2.94 MB/s

Random write performance is near identical, but there are some significant differences in sequential write and random read performance. I've always wondered just how much of a difference exists between various eMMC component suppliers within a given hardware platform, so it's good to have some idea with the Moto X. The Toshiba drive's sequential write performance is substantially less than what SanDisk offers, although random read performance favors the Toshiba solution over SanDisk. I have a hunch that most usage models aren't bound by random read performance, which would make the SanDisk solution the better one, but that's speculation on my part.

To really stress the eMMC implementation and F2FS, I filled my 16GB Moto X’s roughly 12GB data partition with sequential data. I left less than 200MB free on the device, and then ran our standard 100MB span of read/write tests. This is the same procedure that left the 2013 Nexus 7 with ~0.1MB/s random write speeds, but in the case of the Moto X we saw a small but nowhere-near-as-bad performance degradation:

Moto X Storage Performance
  Sequential Read Sequential Write Random Read Random Write
New Condition 61.99 MB/s 11.49 MB/s 12.90 MB/s 3.17 MB/s
1st Run After Fill 60.52 MB/s 9.42 MB/s 13.33 MB/s 2.38 MB/s
2nd Run After Fill 62.54 MB/s 10.24 MB/s 13.05 MB/s 2.43 MB/s
3rd Run After Fill 62.00 MB/s 10.42 MB/s 13.38 MB/s 2.24 MB/s
4th Run After Fill 61.90 MB/s 10.12 MB/s 13.03 MB/s 2.04 MB/s
5th Run After Fill 61.16 MB/s 10.01 MB/s 12.92 MB/s 2.40 MB/s

At worst I saw a 50% decrease in random write performance, while still delivering an order of magnitude better performance than the worst case on a 2013 Nexus 7. The combination of eMMC hardware and F2FS appears to give the Moto X relative immunity to the sort of significant slowdowns we’ve seen with other Android eMMC implementations. In other words, based on this data, you could run your Moto X at or near full capacity without significantly compromising user experience.

It gets even better.

I then deleted all of the files I wrote to the F2FS partition to find out if I’d see an immediate improvement in performance. I did:

Moto X Storage Performance
  Sequential Read Sequential Write Random Read Random Write
New Condition 61.99 MB/s 11.49 MB/s 12.90 MB/s 3.17 MB/s
1st Run After Fill 60.52 MB/s 9.42 MB/s 13.33 MB/s 2.38 MB/s
2nd Run After Fill 62.54 MB/s 10.24 MB/s 13.05 MB/s 2.43 MB/s
3rd Run After Fill 62.00 MB/s 10.42 MB/s 13.38 MB/s 2.24 MB/s
4th Run After Fill 61.90 MB/s 10.12 MB/s 13.03 MB/s 2.04 MB/s
5th Run After Fill 61.16 MB/s 10.01 MB/s 12.92 MB/s 2.40 MB/s

Delete ~12GB of Data, Free up Space

1st Run After Delete 61.69 MB/s 12.08 MB/s 12.98 MB/s 3.62 MB/s
2nd Run After Delete 61.90 MB/s 12.06 MB/s 12.56 MB/s 3.96 MB/s
3rd Run After Delete 62.26 MB/s 11.98 MB/s 12.93 MB/s 3.95 MB/s

I waited a few seconds after deleting the ~10GB of data I wrote to the drive before running our storage tests. Apparently that wasn’t long enough as there was a several second pause while writing my 100MB test area to the eMMC device. I suspect the eMMC was still TRIMing the recently freed blocks, causing the pause. Once the test started running however, performance shot up past my first run on the Moto X.

It seems like the Moto X implements TRIM on delete, at least on the F2FS partition. My guess is that TRIM on delete is fairly easy to implement with F2FS given the file system’s SSD-like garbage collection.

Motorola’s decision to include F2FS on the Moto X appears to be a great one from a performance standpoint. The Moto X is the first Android device I’ve used that should be able to keep its performance relatively high while operating in a (nearly) full partition state.

F2FS seems to mirror a lot of the fundamental architecture decisions of high-end SSDs, but at the file system level in software. As eMMC controllers tend to be fairly limited in performance, and eMMC firmware architectures are equally disappointing, leveraging the host OS to do things a little better makes a lot of sense. For the past couple of years I’ve been wondering what the path will be to improve storage performance in mobile devices. I’d previously assumed that we would simply see steady increases in storage performance/complexity, but perhaps we’ll instead see the burden shared by both mobile hardware and the underlying OS/file system.

What are the downsides to F2FS? The big one for me is that I don’t have much experience with the file system. There are always concerns about doing something different, particularly when it comes to trying new file systems on user data. Keep in mind, none of my analysis here has anything to do with reliability or the ability of F2FS to maintain data integrity.

GPU Performance Camera Analysis - One Clear Pixel
Comments Locked

105 Comments

View All Comments

  • chrone - Tuesday, August 27, 2013 - link

    Great review, Brian and Anand! :)

    Did you notice any transition animation jank/stutter and sluggish/choppy scrolling on Moto X day to day use? Would really like the smoothness of Apple iOS landed on Android world in the future. :)

    I often encounter transition animation jank/stutter when opening or closing apps, switching in between apps, and entering-swiping-leaving home screen on Nexus 4 running Android 4.3. Perhaps the soc and battery thermal throttle and lack of random write IO are the culprit of janking or stuttering on Nexus 4 transition animation and scrolling performance.
  • GrimR. - Tuesday, August 27, 2013 - link

    Thanks AT for the review. I've not seen such an in-depth review that actually considers the hardware components of this phone so objectively without doing the "OMG-no-1080p-screen-no-quadcore" whining. :) Appreciate it.

    But where is the Lumia 925 and Lumia 1020 reviews? :( Please post them too, they came out way before the Moto X.
  • bntran0410 - Tuesday, August 27, 2013 - link

    I created an account just so that I could thank you for writing such a great review! There are so few true tech writers around that actually write about technology. I am glad there we still have anandtech to have reviewers that actually review with this level of technical detail and scientific backing to what is written. Thank You!
  • elotrolado - Tuesday, August 27, 2013 - link

    I, your average user, am buying a Moto X, honestly. And here's why: I researched the HTC One and Mini, Samsung S4 and Mini, and the Moto X is the clear winner. Primarily, the One and S4 are too large for me, as I want something pocketable and easy to handle. In addition the S4 is too complicated with both"features" I would not use and Touch Wiz. I do love the One's front facing stereo speakers (let's make this standard in all phones) and the Zoe photo feature, but again, the Moto X is pocketable with the largest ratio of screen to phone dimensions of possibly any phone on the market, and 720p is just fine especially given it allows for long battery life. I drive alone in my car quite a bit and have yet to find a bluetooth headset that works well. I am really looking forward to using the voice activated controls of the Moto X to do all kinds of things, as well as enjoying the quality of the speaker to actually hear the person on the other end. Active notification is pretty great too. The phone does seem priced a bit high, but for a tool that I'll use everyday that will increase my productivity and make my life easier and safer while driving, an extra $50 or so is certainly worth it. Last, I expect this phone to get Android updates quickly, right after Nexus devices, and this will only enhance it's already awesome software abilities well into the future.
  • elotrolado - Tuesday, August 27, 2013 - link

    I, your average user, am buying a Moto X, honestly. And here's why: I researched the HTC One and Mini, Samsung S4 and Mini, and the Moto X is the clear winner. Primarily, the One and S4 are too large for me, as I want something pocketable and easy to handle. In addition the S4 is too complicated with both"features" I would not use and Touch Wiz. I do love the One's front facing stereo speakers (let's make this standard in all phones) and the Zoe photo feature, but again, the Moto X is pocketable with the largest ratio of screen to phone dimensions of possibly any phone on the market, and 720p is just fine especially given it allows for long battery life. I drive alone in my car quite a bit and have yet to find a bluetooth headset that works well. I am really looking forward to using the voice activated controls of the Moto X to do all kinds of things, as well as enjoying the quality of the speaker to actually hear the person on the other end. Active notification is pretty great too. The phone does seem priced a bit high, but for a tool that I'll use everyday that will increase my productivity and make my life easier and safer while driving, an extra $50 or so is certainly worth it. Last, I expect this phone to get Android updates quickly, right after Nexus devices, and this will only enhance it's already awesome software abilities well into the future.
  • shackanaw - Tuesday, August 27, 2013 - link

    PC Magazine reported that Iqbal Arshad, Motorola's senior vice president of engineering said "We've done additional optimizations on top of that such as optimizing the entire Linux user space to move it to an ARM instruction set, cache optimization, Dalvik just-in-time optimization, and we've changed the file system."

    In this review, you guys covered the changes to the file system, for which I applaud you for being much more thorough than any other reviewers, but can you comment about any of the other things he mentioned?
  • Miroslav - Wednesday, August 28, 2013 - link

    Excellent article Brian, and just FYI http://www.forbes.com/sites/patrickmoorhead/2013/0...

    :)
  • PeterO - Thursday, August 29, 2013 - link

    Simply put, Brian, you've penned an outstanding review. Depth, tone, observation, telemetry to conclusion ~ all top shelf. It's a genuine critique. Thank you for the enormous amount of work and heart put into this piece. The passion and dedication shows, and it's a true pleasure to read.
  • massysett - Thursday, August 29, 2013 - link

    I've never understood why geeks worship at the altar of "stock Android." Believe it or not Google is not the only company that has interesting ideas on how to create a UI for a mobile phone or tablet. Handset makers can add useful enhancements.

    I've got a Nexus 7 and an HTC One and, before that, a Moto Droid Bionic. All worked fine and I wouldn't even pay $5 more to change the HTC One or the Droid Bionic to "stock Android".
  • ThortonBe - Thursday, August 29, 2013 - link

    I'm excited to hear that audio testing will get more visibility. I also really appreciate the GIFs.

Log in

Don't have an account? Sign up now