Play Store App Updates

One of the most demanding real-world tasks on Android is the installing and updating of applications. Doing mass-updates on several applications at once can heat up most devices as we see heavy computational load not only in the install process, but also caused by ART's ahead-of-time compilation and optimization process.

I recorded a ~80s period where the Play Store updated several installation packages, such as Android's WebView component as well as a few other user-applications.

The Play Store update process seems to be extremely liberal with spawning threads. The little cores are severely over-capacity as we see package updates loading up to 8-9 threads onto the cluster. The two major peaks towards the end of the log especially demonstrate this fact as all CPUs vastly exceed the optimal run-queue depth of 1 when under load, which causes the scheduler to need to preemt between multiple processes.

While it may have been intriguing to see the little cores loaded to such extent, the big cluster seems outright shocking as it as well sees very significant thread-placement. This is one of the rare scenarios where having 4 big cores is not enough. Similarly to the little cores, we see peaks where the run-queue depth vastly exceeds the optimal value of 1.

When looking at the total system run-queue depth, things look for a lack of better description, quite ridiculous. We routinely have peaks where all 8 cores of the system are fully loaded and peak at over 10 threads. It looks like Google is able to massively parallelize the app update process and take advantage of even the highest core-count SoCs. This scenario is absolutely about maximum throughput and performance while utilizing all available hardware resources.

App: Play Store Open & Scroll Camera: Launch
Comments Locked

157 Comments

View All Comments

  • Hrobertgar - Tuesday, September 1, 2015 - link

    Your spikes on the video recording appear to be every ~4 secs of video, could the CPU spikes be app / memory related?
  • badchris - Tuesday, September 1, 2015 - link

    Thank you for this excited article.And one problem,how do we explain 2 big core Snapdragon 808 is more efficient than 4 big core Snapdragon 810?
  • Andrei Frumusanu - Tuesday, September 1, 2015 - link

    You cannot make comparisons between different SoCs even if they have the same CPU IP and the same manufacturing process. The S808 is different from the S810 which are again different from Nvidia's X1 even if all 3 have A57 cores on TSMC 20nm.
  • badchris - Tuesday, September 1, 2015 - link

    nvm,i should realize this comparison is not scientific.
  • metafor - Tuesday, September 1, 2015 - link

    The S808 and S810 should be fairly similar though. That's not to say you can say that the only difference is the CPU configuration but a similar study on what the behavior is like on a different SoC with fewer cores would be helpful.

    Threading isn't 100% free and neither is thread migration. It might be good to take a look at just what the S810 is doing over time compared to the S808 in terms of CPU activity.
  • Andrei Frumusanu - Tuesday, September 1, 2015 - link

    I have data on all of that... It's just in need of being published in an orderly fashion.
  • kpkp - Tuesday, September 1, 2015 - link

    There are quite few other differences beside the 2 cores, starting with the memory controller.
  • badchris - Tuesday, September 1, 2015 - link

    thx for your notice.there're something i forgot
  • npp - Tuesday, September 1, 2015 - link

    As an ex-Android developer I can remember that the SDK not only encourages, but sometimes straight out enforces extensive usage of threads. For example, around API level 14/15, making a network request in the main thread would throw an exception, which may seem obvious to experienced developers but wasn't enforced in earlier versions. This is a simple example, but having the API itself pushing towards multi-threaded coding has a positive effect on the way Android developers build their apps. I'm not sure then why Google's own browser would be surprising for its usage of high thread counts - even a very basic app would be very likely to spawn much more than 4 threads nowadays.
  • Arbie - Tuesday, September 1, 2015 - link

    "I was weary of creating this table..."

    That's not surprising, after all your work ;-).

    Terrific article BTW which is up to Anandtech's long-time standards. Seems like a mini master's thesis.

Log in

Don't have an account? Sign up now