But DATA is exploding. And new features are coming. Optimisation has a hard floor with regards to the reduction that is possible (i.e., you can't optimise down to zero - and a lot of the legacy garbage has already been cut out now).
Is data really exploding though? Sure, over the last few years we experienced boom of HiDPI content, which obviously meant quadratic increase in storage needs. But at the same time we also seen increase in vector graphics use and other kind of procedurally generated data. What else is there? Wide-gamut color? That you can still pack into 32bits for the foreseeable time. Not to mention that new codecs are actually more efficient than old ones.
P.S. Look through WWDC videos of this year. Apple mention on multiple occasions how they work to make their OS and tools more efficient.
P.P.S. Much of this RAM explosion comes from very lazy programming btw. And also of some very worrying trends in some development scenes, mostly web front-end stuff. I do not understand why a basic web app setup needs that much garbage. When I was modifying a ruby on rails app I was horrified to see that my basic rvm+tools installation took multiple GB on disk! Then add all this Docker stuff and suddenly your average web-dev needs a supercomputer to make a hello world web template!
Maybe. But with the explosion of using data in all subjects in school, students need to be able to handle large sets of data. My daughter uses 1.2 TB datasets in her biology research. A decade ago 1 GB would have been considered very large. Welcome to the world of AI and Machine Learning.
I regularly work with multi-TB datasets. So what? Having more RAM here won't necessarily speed things up. In the end, its all about how the algorithm works. A naive algorithm that requires all the data be loaded in RAM will starve you out very quickly. But the fact is that if you work with large data, you CAN'T have it all in RAM to begin with. It doesn't matter whether you have 8, 16 or 128GB RAM — a 1TB dataset simply won't fit. Which means that you need to stream in parts of the data and process them accordingly — and depending on the particular task and the algorithm you might not need that much RAM after all. The question is not about how much data you have. The question is about how much data you need to be close to the CPU at any given time.
This all is far from trivial. Bandwidth of modern DDR4 RAM is in the ballpark of 30GB/s. If you are working on a trivial task where your CPU can process data faster than that, yes, you need a lot of RAM. But in most scenarios, you'd process the data slower. Which means that processing one buffer of data while another buffer is getting streamed in from the disk is just as fast in practice. Also, more RAM means diminishing returns. Take a current consumer mobile high-end quad-core CPU with 8MB cache. The more RAM you have the more likely you'd get cache conflicts, sending your performance down the drain. If you want to have 32GB or more RAM, you really should start looking into quad-channel memory controllers and large caches.
In a few years, most people still won't need 16 GB to avoid the pageouts, but the argument isn't that we will need 16 GB. The argument is that we will need more than 8 GB. Even today, if you have two users on a computer, 8 GB is limiting because the second user with minimal apps loaded will still use up about 2 GB RAM. With only a single user, I currently use about 4-6 RAM usually with moderate usage but sometimes it's a little bit more. Do you really think in 5 years, having another 2 GB RAM will be enough to avoid page outs?
Why do you talk about avoiding page outs like its such a terrible thing? If I am switching to a different user, I WANT the data of the user in the background to be paged out, so that I can get more for that active RAM for my needs. The only relevant thing about page outs is that you don't want them on the data you actively use. Everything else SHOULD be paged out. To out it differently, if you never have any page outs, then you simply have way to much RAM
🙂