So I took all the data from the Slatedroid thread and normalized it (converted the iop numbers to mb/s) and also added in some pretty "loose" speculation on what eMMC should do for the new line of tablets from FNF that are using the currently available RK3188 processor. The first chart above shows an "average rating/score" for each device but probably doesn't quite tell the whole story. I have a heavy suspicion that a lot of the "stutter" that occurs on tablets as a result of storage is probably heavily dependent upon the low "random write speed". More so than the other metrics.
First, thanks to this Microsoft Technet article for a brief overview of random vs. sequential disk access:
"Comparing random versus sequential operations is one way of assessing application efficiency in terms of disk use. Accessing data sequentially is much faster than accessing it randomly because of the way in which the disk hardware works. The seek operation, which occurs when the disk head positions itself at the right disk cylinder to access data requested, takes more time than any other part of the I/O process. Because reading randomly involves a higher number of seek operations than does sequential reading, random reads deliver a lower rate of throughput. The same is true for random writing. You might find it useful to examine your workload to determine whether it accesses data randomly or sequentially."
So random RW activity is much more likely to be a bottleneck because storage technology by nature isn't as quick about it. Hence I think that random access is most likely the root issue with mobile devices.
So what activities cause what kinds of workloads? Here is a brief breakdown of what activities on a mobile device are probably influenced the most by random -vs- sequential read and write metrics (Please note, this chart is neither comprehensive nor absolutely reflective of the real world. During all of the listed activities both sequential and random activity is probably ongoing however one more so than the other depending on the workload):
- Loading large applications (load times for games)
- Loading up any other kind of fairly consistent / large data set (playing a very large video file)
- Copying data off of your device to your PC (downloading a ton of pictures or doing a whole device backup)
- The exact opposite of Sequential Read... so.. Installing large applications (games...)
- Downloading large files (games, movies, etc.)
- Pushing large files to your device from your PC
- All kinds of stuff - Browsing through our music, picture, or document collection
- If your application uses a local database - TONS of random read activity will be going on - Using your tablet as a webserver for a database driven site? This will be your bottleneck for sure... There are other more normal use cases where a database is involved though, perhaps not often locally.
- When an application is programmed well, bad random read performance on your storage can be GREATLY offset by proper utilization of system ram. This often help negate this bottleneck.
- All kinds of stuff - pretty much any of your daily activity that requires small things to be written to disk. Which comprises more than you might realize...
- Every time your gmail/email accounts get a new message and it syncs
- Internet Browsing
- Random Writes happen during application installs as the installer unpacks files / uses temporary storage locations / etc...
- Bittorrent downloading to your device (if your participate in such things) is probably highly random due to the decentralized nature in which bittorrent handles large file downloads
- Everytime you open an application and it has to log or notate something or load something temporary and your ram is full
- Anytime your RAM fills up
- There is a lot more that goes on behind the scenes on a mobile device and I am not creative (or caring) enough to find more things to list here. Realize though that it happens.
So eMMC and most "iNAND" solution use cache... Cache is a very SMALL amount of "hyper-fast" storage that data can be temporarily loaded into. You can think of it like a capacitor (if you know electrical). You might have a suddent "burst" of random write activity, rather than sending it all directly to the storage chips, the writes are temporarily put into very fast cache and then moved over to nand. This can help to greatly smooth out day-to-day activity. Like when your email client syncs. It all hits cache and your system keeps on moving rather than stuttering. Cache is expensive though so there isn't a lot of it and once it fills up things can slow down. I am sure I am butchering all of this but hopefully I am getting a very basic understanding across.
So sequential read/write performance is going to make your life much easier during those less frequent times (less for me at least) when your waiting on the next Call of Duty level to load. But for the more frequent day-to-day stuff, like downloading new apps, checking email, and internet browsing... Random RW is king, and random write tends to be the slowest metric. Hence the bottleneck. So, now that you hopefully have a better idea of what you are looking at... the charts!
The following devices (and therefore SoC platforms) were compared:
- Ramos i9 (Atom Z2560)
- Dell Venue 8 (Atom Z2560)
- V-975m (AML8726-M8)
- iFive X2 (RK3188)
- iFive Mini3 (RK3188)
- iFive Mini3 (RK3188, 4.4)
- iFive Mini3 HD (RK3188 + eMMC, est.)
- Chuwi V88 (RK3188)
- Ainol Novo 9 Spark (A31 @ ?)
- Ainol Novo Spark (A31 @ 1.2 Ghz)
- Sony Tablet Z (Snapdragon S4 Pro)
- LG G2 D802 (Snapdragon 800)
- Galaxy Note 10.1 2014 (Snapdragon 800)
- Galaxy Note 1 (Exynos 4210 Dual)
In conclusion I will just note a few things..
First, FNF iFive has already come out with several devices utilizing eMMC storage chips and it is very exciting. Unfortunately I don't have any benchmark numbers for those devices yet. It is interesting because the next generation RK3288 SoC isn't quite here yet so these devices are using the RK3188 and it will give us an idea of HOW MUCH of an influence moving to eMMC can have a on a platform when the SoC stays the same. Based on the research I could find I tried to be conservative in my estimates of the storage performance on the new FNF iFive Mini3 HD. Please understand that is totally a guestimation on my part, not hard numbers. The rest are numbers provided by the kind community members over at Slatedroid and compiled by Nickos-V.
Secondly... I think the Intel devices in particular probably fair well for one or more of the following reasons.... Intel knows what they are doing when it comes to storage, and the Atom chipset probably does a better job than most at handling NAND or iNAND chips .... AND/OR .... those devices are already using eMMC solutions.
Third.... I felt like the AmLogic MC802 inside of the new Onda V-975m had an encouraging showing... It's average metric was hurt the most by poor Sequential Write scores however that is probably the least important of the four...?
Fourth... The RK3188 and A31 based devices did rather poorly on Random Access. However, for whatever reason, the RK3188 does a phenomenal job on sequential write jobs?
Fifth... Many users have noted that KitKat (android 4.4) firmware for the Mini3 has greatly improved the smoothness of their day-to-day experience. It is easy to miss, but if you notice the Random Write chart, the number doubled... It is easy to miss because it was so small to begin with at only 0.3 Mb/s.
Finally... if my speculation on the eMMC usage on the Mini3 HD is any indicator, it makes the RK3188 as a platform significantly more competitive in its weakest area, that being storage performance.
So, overall, I am really excited to start getting some real numbers on the new FNF iFive devices! Cheers and thanks for reading!