Where did my 256 GB go? Mobile storage Analysis [pdf]
dl.acm.org
dl.acm.org
I thought it was just me as a “power user” but then I noticed that my wife and kids were spending hours deleting stuff to make room for app updates. It’s a silent problem that people just seem to monkey around with.
Some apps are huge, I have 256GB because I ran into problems with only 64GB. “enterprise” apps that use up lots of app storage and then require local data storage for caches to edit files.
A big offender is Microsoft where the office apps are each 500MB and different apps are needed: Excel, Word, Office, OneDrive, PowerPoint. Why is Edge 200MB?
It’s common for apps to be 250MB and grow and grow. I used Chase as my credit card and their app is 300MB. I keep the app because their web site is horrible and requires MFA to login, so the app is easier.
It was impossible to use my phone with “only” 64GB without constantly deleting and reinstalling depending on what I needed at the time.
I remember the days of small hard drives when bloat really mattered, but it seems like devs just assume that people only use their app and it’s not reasonable that the Gmail app requires 300MB or PayPal needs 250.
Looking at something like the Infinity reddit client vs the official one. Infinity clocks in around 38MB the official client is around 100MB. They provide essentially the same functionality, the layout and UI is even very similar, yet one manages to be almost 2/3rds smaller in size.
So, thats worrying for a number of reasons.
not clicking that.
They don't. Not even close. It's actually sad.
It's the "people have powerful computers now so we can be as lazy as we want" culture. We have amazing computers but they feel less powerful than an 80s arcade machine.
This is something I find myself asking more and more almost every time I use a computer or mobile device. I have multiple cores here. Why is anything stuttering? Why are these processes taking so much memory up? Why is this web page pulling down 100MB of traffic? Why do I remember text console DOS apps being so much more responsive than today's click-then-wait UI apps? Before spinning hard drives dropped out of fashion, you could hear that thing grinding away, doing who knows what, while the computer was sitting there supposedly idle! What gives software developers the idea that they can just have their software just wake up and do things without the user commanding it?
Just a particularly egregious example: If there's one thing that nothing on the entire system should preempt, it's the mouse cursor. If I move the mouse, the cursor should move instantly. There is nothing more important that the computer should be doing. I thought this was like a basic, very well understood rule and a solved problem. Hell, I recall a long time ago things like mouse cursor drawing were driven off a hardware interrupt. On today's "modern" computers, if I have a lot of applications running in the background, the mouse cursor will stutter and lag, and text input will be buffered and show up N seconds after I type. Totally unacceptable, yet software continues to ship like this.
EDIT: Sorry, the rant kind of drifted off of the "nobody cares about bloat" problem and into the general "nobody cares about performance" problem.
Sounds like your screenshots are being conveniently uploaded to MS servers so you could share them (Yay!).
Getting such enormous delays when performing otherwise simple operations usually means that network requests are being made, and servers aren't normally snappy when it comes to free storage.
Here is my example of enormous loading times: it takes a few minutes to clear browsing history on the android version of Chrome browser. Quite outrageous.
(also why is everyone so needy these days, to the point of a simple OS-built-in calculator app asking for a rating?)
Some oxygen waster's salary and career is tied to these metrics.
I suspect that it's he heavyweight GUI library that takes a lot of time to initialize.
I would expect to just write it to disk and sync whenever. Instead it seems to take seconds any time it hits “the cloud” and makes me wait. So I bet your screencap tried to transfer your file.
I see this when trying to open files from OneDrive even though I have it local. Word will take seconds to “browse” through online OneDrive directories even though I have them local. So it might take 10 seconds just to pick a folder to save a file.
And of course, afterwards my cpu will peg for minutes doing something.
Windows 2000 on the Pentium 3 with 300 MHz felt way snappier.
The Linux desktop isn't perfect, but basic stuff like that works way better there on the same machine.
obviously, that's just a guess.
It's been like that since Win7.
Not latest iPhone = poor, right?
For example, Facebook ("lite") and google ("go") already optimize their apps to those markets. Why not eg McDonalds?
Oy. I meant "developer time is more expensive than machine time." It's been a long day.
BoA - 457MB
AMEX - 130MB
USAA - 109 MB
I only have BoA because I haven't canceled my CC with them yet (kept because AMEX is not accepted everywhere). It seems I deleted my other bank apps (after I'd closed the accounts, makes sense, right?) but IIRC they were somewhere in the 150MB-200MB range. Some people just really like bloat I guess.My only use case for apps is mobile check deposits, presumably because asking for camera control on mobile devices was beyond the ability of their web developers.
s/devs/product managers
Why are you bashing PM's?
At the end of the day, if delivering a new feature on time adds another 5 MB, it is what it is. Pretty useless to try to assign blame to either devs or PM's, or portray them as somehow opposing teams. They both want success for the business.
I agree that both developers and product managers want success for the business.
I probably should have said product owner here rather than product manager. I only meant to call attention to the fact that it's often others in an organization beyond the developers making decisions around whether to optimize for this sort of thing.
On average, more technically-minded folks are more likely to want to optimize for technical things like app install size where the business impact can be a bit more abstract and difficult to measure, particularly when compared to folks like product managers who are likely to have their individual performance evaluated by even less technical stakeholders on their ability to quantify the impact of whatever ends up getting shipped.
Again, I'm generalizing here - of course there are highly thoughtful and competent folks capable of balancing competing priorities across domains in any type of role.
Now, with a Pixel 4a the System/OS singlehandedly uses 18GB of storage. Today, I do not see myself ever filling up another 100GB of apps but who knows what app sizes will look like in 5 more years.
I too have 64GB. I just checked and my phone says apps take 11GB, and I have about 33GB free. At 250MB each (and many on my phone take less) that would be over 250 apps on a 64GB phone...
Do you actually use that many apps. Am I just a Luddite?
10GB was OS, there rest was music, photos, videos.
Ah, that'll change the equation. I just use Teams and Outlook apps for work on my phone (besides calls and texts).
Right, but this was a discussion on app sizes. Photos and videos aren't due to the size of the apps, and can easily go on an SD card.
> cached images, music, and other files
Good point about caches. Should be some global policy for that IMHO. One thing is things like map apps downloading regions on demand for offline use, but just plain old caching...
> Games also take up a ton of space.
True, that's an issue even on my desktop computer with a 1TB SSD. Though I don't consider those regular apps. Still, point taken.
I think that might with tons of apps that are rarely used. But it sucks if I have 10-20 apps that I frequently used.
I bet you don’t have kids.
In retrospect quoting that last piece, rather than the whole comment, made a lot more sense when I first wrote it than it does now.
Well, I have SD cards for that... Regardless, the context was apps taking space. If I had used 80-90% of my storage for pics, then size of apps isn't the issue.
This is why I think China has won. They are able to leverage free market dynamics without the ip/legal bloat here and then they just pull out the gun for national interest.
I feel the same way. But as we curmudgeons stand athwart history, the whole of software development is moving toward the largest sizes the technology will allow.
Typical counterpoint is VSCode, wtitten in Electron. But you know, VSCode has had some serious engineering and optimisation effort ($$$) so not really a typical example at all.
However, I have always used JEdit to copy-paste huge text, like anything beyond 100k log lines from some software. JEdit seems to handle everything fine, while Kate has always hung up on me during some 10s of seconds (any kind of parsing or colorization are disabled in Kate, and the minimap is too... after that wait, everything works fine though).
Turns out, VSCode handles this kind of pasting nicely too, so I've replaces JEdit with it. Which drives me to think there is some low hanging fruit performance wise in Kate.
These days, I stick to Emacs and Vim (terminal) for large files. Perks of being in a Linux shop, I guess.
It’s common for apps to be 250MB and grow and grow. I used Chase as my credit card and their app is 300MB.
For what it’s worth, 200 to 300MB per app seems entirely reasonable to me. I’m not sure why it would be smaller or different.
I was expecting you to point out a 5GB app. That’d be overboard. But 200MB? Sure, why not?
Not to say you’re wrong. It’s likely me, not you. It just… seems fine.
I can't remember with Galaxy S2 16GB, Galaxy S3 32GB, Galaxy S4 64GB, Lumia 1520 64GB? iPhone 7 Plus 128GB, OnePlus6 256GB
Deleting apps or anything else to get more free space on my phone's.
I don't have a main browser, I always used Edge, Firefox, Chrome and Samsung browser or Internet.
All the Facebook apps with Instagram. Always trying to get the biggest app and load my maps from Google drive for Offline navigation too.
Double or triple photos
And still didn't run out of storage.
Some users will build up a cycle of delete A and B to install C, then delete it to put back A and B. The smaller your app is, the more likely it is to stay installed because it's not as helpful to delete it.
The biggest obstacles are small storage phone users are well represented in non-Play store installs, which often means a fat apk that has binary libraries for all platforms and raster images for all dpis. The other big issue is translated strings; Android standard string translations can't be compressed (apk is a zip, but not everything in a zip is compressed), even though they would be very compressible. There's a lot of languages out there, and not using the standard translation tool is hard to sell (and you still need it for somethings anyway).
Doesn't help for US based banks though. Mostly their customers are going to have enough space that a bank app isn't going to get deleted to make space for whatever else.
As an aside, I dug out an old 16GB Nexus 5 phone to use as a security camera monitor. With exponential app bloat, the basic camera app was a 300MB download, and ate 80% of the phone's free space. All that for a glorified video stream player. The rest of the phone with its outdated apps actually feels quite usable as a modern Android phone--what exactly did today's 10x size get us?
If it was, that was a sucker-play. Just like with CPU, RAM, and traffic lanes, any resource optimization will simply make room for something else to occupy.
The steady-state of storage media is full.
The secret? Don't use android app compat, or rather, don't use any external library. Just plain old java. The apps are ugly (no themes) but they work extremely fast and to the point.
In case anyone else was wondering where to get such apps. Probably on F-Droid too?
This feels like the analog of the "10 GB node_modules" meme.
I wonder how much of the size explosion is due to feature bloat, inefficient implementation, backward-compatibility stuff, and external libraries...
Last time I checked it was a mix of assets (images mainly) and rarely used functions. In the case of app compat almost all is due to backward compatibility. That library allows you to use features intended for newer APIs, but making it compatible with older versions. This has advantages (mainly the themes) but it also means that the apps contains a lot of assets and code that will never run. The app bundle reduced this problem, but it's still present.
A/B testing. Tracking. Things like that.
12 years ago, the iPhone 3GS was cutting edge. With a 480x320 screen. That's just 0.15 million pixels.
There are now Android phones with full 4K screens. That's 3840x2160, a little over 8 million pixels.
That a 50x increase in pixel count. Anything using bitmap graphics (games being an obvious example) is going to be much bigger now.
(And in that same period, it seems that the average Windows PC desktop resolution has remained pretty much unchanged for most users...)
It's probably impossible for Google to keep all shared libraries on devices, as there are millions of those not getting updates, so only way is to keep everything duplicated in each app. Now I'm considering converting app to PWA, even if it means that UI will look out of place and potentially will have more accessibility issues. At least I hope to keep app size as small as possible.
[1] https://play.google.com/store/apps/details?id=com.miv.rtspca...
- Apps declaring how much space they need
- The OS enforcing that size as the quota.
That's it. There's no need for the OS to figure out how much space to give to apps.
This way, if I install an app that is purportedly a 2GB app, I'll know exactly how much space I'll lose.
If an app needs more space after an update, that update would require a manual approval from the user.
Something tells me that if app developers were required to be honest about their disk usage, and knew that he users would have to agree to a "This app wants 5GB more space after an update, are you OK with that?" prompt, we would not be where we are today.
On top of everything else, I wish Android versions were held to the same standard, and that phones were advertised with the amount of free space available to the user.
Imagine getting a notification that you don't have enough space to install Uber, but Lyft works fine.
Or realizing that you don't have space for apps after installing WhatsApp, but not Telegram.
Would be fun to see how the pressure on the devs works in this case.
For an app you're actively using, you'd probably accept the update, but there would likely be pressure on the devs from the percent of people who would uninstall it instead. I think the hope is that this would cause them to think twice about bloating for no reason.
I'm talking 32gig phone, with 8gb 'system', 20gb "other", and a few apps. I can delete all the apps, app updates (because preinstalled apps are installed twice, once in the system partition and then a new version in the data partition), and 20gb is still missing. I can mount the phone, and find 5mb of random files, zero photos (i removed them earlier), and still, 20gb missing. I have a theory, that samsung updates leave some trash behind somewhere on the system partition and never clean up after themselves, because after a factory reset, and full upgrade, the space is back, even with all the apps and updates.
I don't want to root those phones, becase they're not mine, and this brings in more issues (eg. eternal support), and factoy reset seems to be the only way to "fix" them.
It’s infuriating that Apple allowed it to happen in the first place. It’s yet another slow-motion quality degradation like the battery-induced downclocking a couple years ago.
Unless you were rooted, the only workaround to free up that space as an end user was completely uninstalling and then reinstalling the app. I tried contacting their support about it, but it was of course useless in trying to get them to understand the problem…
Google in turn used to ship a number of 0-byte .so-files with their apps in order to circumvent the problem.
I have an old Nook eBook reader that I haven't used in a very long time because if became impossible to update. There was an Android update that said it would let you configure external storage as a seamless extension of the internal storage. There was just one problem: Android insisted that Android's Apps be stored in internal memory. The poor old Nook only had 8 Gb of internal memory (what do you expect for only $49). The OS took almost 4 Gb, the Android Apps also took almost 4 Gb, leaving less than 100 Mb. After a while it became impossible to update and now it's in a box somewhere with all its other abandoned bretheren.
I don't really have a video collection, though if I did I would use Plex or something
I don't take a ton of photos - sitting at 6GB right now - though they also get backed up to Dropbox so I could delete them if I needed to
App developers should keep their app sizes down instead of driving everyone to add ridiculous amounts of external storage.
Problem is SD cards are so incredibly slow that when you move apps over, the whole phone is stuck waiting and performance severely degraded. I’d much rather just buy a phone with as much storage as I need out of the box and know it will be high performance flash.
Just a side note that rooting may not be necessary. (even if I would love me a true Linux phone :)
I suspect a lot of this reduction was probably loading content on-demand. Wouldn't be surprised if all the different items and event data were pre-downloaded before that update. Whatever it was, it was evidently not crucial since it's always used much less space on mobile— they just hadn't gotten around to keeping disk usage under control on PC too.
[1]: https://www.theverge.com/2020/10/21/21526916/fortnite-pc-fil...
https://godotengine.org/article/betsy-gpu-texture-compressor
It seems likely that the games now ship a small fraction of supported textures, and transcode at load for any unsupported devices?
I thought it was going to be about analyzing what’s eating up my phones storage (system storage I’m looking at you) - and note it focuses on Android only. Not sure how much of the analysis extrapolates to iOS apps.
A software dev colleague of mine bought a ZTE phone early in the iPhone era and the immediate thing we noticed is that it would peg the CPU, get hot, and run out the battery in a few minutes.
In the desktop world any program is entitled to peg the CPU as much as it likes; if it is blocking the render thread it might get some "tough love" from the OS, but otherwise it's not a problem. In mobile, the CPU is a precious resource.
Android has not caught up with the idea that anything is precious.
I do really not want Google making this decision for me.
If they decide to display a warning, or create a new permission for that, fine. But it's really not something for Google to decide in a centralized, "we don't care about individual use cases" procedure.
I don't know what your brand or last device with this problem was, but there's a reason https://dontkillmyapp.com/ exists. Most of the battery issues were solved years ago with Android 6 (and then the situation improved with 7 and 8).
An focused application (or applications, in split view) is able to drain the battery, but that's just intended behaviour. You wouldn't be able to use a battery app or play a mobile game like pokemon Go if the OS would limit the current application.
I've only experienced the overheating problem on some midrange to cheap (<€200) Android devices, but that's usually because of the cheap, inefficient SoC that's found in the bottom of the spec sheets.
My phone saves battery to the point of killing background apps that I don't want killed. Luckily, I can turn that shit off, though Xiaomi has three different ways to make sure background apps don't get killed that I need to work through.
My teams did many optimizations in mobile apps to keep file sizes small, only for more than one future employer (or relevant decision maker there) to question my experience because the executable sizes listed in the App Store are small
“But at scale can you…”
I’ll just put dummy files in thanks!
privileged logic there mate
See what I did there? I turned that 3MB app to a 80MB app.
Disclaimer: Most of my apps are ~15MB and I try to put them under 20MB on Android.
My current phone is nicer in many ways but it doesn't really do anything the very old phone couldn't.
1. Inform users what they are missing out 2. Instill a culture of performance first over features in software dev shops.
The financial incentives of doing these are not very compelling.
Yes, people care.
Your app is NOT the only one on my device.
Also funny when people looks at a website and then complain about why the developers would do this. They did it because that's what they get paid for.
<- That's sarcasm, by the way. But if you asked any of the apps' developers, that is the answer you'll receive.
Sincerely, I hope this mantra dies.