Ars Analysis Calls Windows 7 Memory Usage Claims "Scaremongering"
Via newsycombinator comes a reaction at Ars Technica to the recently reported claims of excessive memory use on machines running Windows 7. From the article: "I installed the XPnet performance monitoring tool and waited for it to upload my data to see what it might be complaining about. The cause of the problem was immediately apparent. It's no secret that Windows 7, just like Windows Vista before it, includes aggressive disk caching. The SuperFetch technology causes Windows to preload certain data if the OS detects that it is used regularly, even if there is no specific need for it at any given moment. Though SuperFetch is a little less aggressive in Windows 7, it will still use a substantial amount of memory—but with an important proviso. The OS will only use memory for cache when there is no other demand for that memory."
Though SuperFetch is a little less aggressive in Windows 7, it will still use a substantial amount of memory—but with an important proviso. The OS will only use memory for cache when there is no other demand for that memory.
I really wonder when people will get this. In the earlier thread I saw people commenting that Windows 95 didn't need so much memory and so on..
To state it again. This is not RAM memory you need, use or have purpose for. IF you do need it, it is zeroed-out and free'd to application in like 30ms (one frame in usual FPS games).
If you have fast memory, do use it to it's full extend.
Really? 30ms. Shit that's slow.
This IS RAM we're talking about here, right? y'know nanosecond stuff, 10^-9 not 10^-3 seconds.
Deleted
The problem with Windows isn't that it has a cache, it is, that the cache sucks. I have a box with 2GB of RAM and I run Visual Studio on it and do a build on a solution with 60 projects. Now you might think that after a day of builds and recompiles, at least some of that stuff would wind up in cache, but it feels like it doesn't. It grinds the disk as much in the morning as it does in the evening. By contrast, my Linux box, where I build a project nearly as large, is always feeling pretty peppy. Bottom line is, Windows, when dealing with jobs with lots of file, feels like drilling holes in my head, and Linux is responsive and pleasant.
Now, it would be nice if we could see what's in the cache in Windows, but you can't.
It would nice if you could peg a file to the cache, in Windows, but you can't.
In short, you have no idea what's in the cache, really, and can't do anything about it, and the disk just keeps grinding away. I wonder, if my drive is busy with files that I've been working on all day long, what for god sake's is sitting in the cache? I just don't know.
This is my sig.
why use some 3rd party tool where you upload data?
in win7 just run resource monitor and click on the memory tab. it's got a nice little picture and everything.
I think it's just a sign of the times. I regularly bump up against my 2GB ram limit (once a day) if I have GIMP/Photoshop open, 3 or 4 Chrome windows open with 10-20 tabs each (many of those being youtube videos), usually a videogame in the background (Windowed No Border mode at full or almost full screen resolution rules), along with whatever else I'm doing, a paused VLC video, steam, and any other background apps + whatever I'm working on currently. This isn't a problem in Win7, it's a problem of Leaving a Bunch of Shit open all the time.
moox. for a new generation.
sopssa is from the UK, but he can't speak English very well when his mouth is full of Ballmer cock.
Though SuperFetch is a little less aggressive in Windows 7, it will still use a substantial amount of memory...
If Windows 7 actually uses that much memory it's not scaremongering, it's memory hogging. Whether it's using it on not is a pretty fine distinction, it's still using it just because it can. If something else needs it, Windows has to decide if it wants to let go of it or not.
Still seems like pretty heavy-handed way of allotting memory to me. The original contention seems to be basically intact. Windows 7 is sucking up your system memory to make Windows appear faster.
That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
This IS RAM we're talking about here, right? y'know nanosecond stuff, 10^-9 not 10^-3 seconds.
If one byte takes 10^-9 s, a million bytes take 10^3 s.
Seems to use 1.3 gig no matter what I do. It's got 4 gig total. Boots in less than 2 minutes. It makes mistakes a lot faster than the old machine, which was just shy of a brick when I switched.
How about a moderation of -1 pedantic.
LOL, the Dalai Lama gets the bum's rush out the back door past the garbage bags...
http://www.gettyimages.co.nz/detail/96834730/AFP
In any case, if you want to compare OS cache performance you might at least try to use the same compiler and the same language on both machines.
Use Visual C++ on both machines? Good luck getting it to run in Wine.
Use GCC on both machines? The last time I tried GCC on Windows, it produced bloated binaries for any C++ program that uses <iostream>. A quarter megabyte for Hello World, on two platforms (MinGW targeting Windows/x86 and devkitARM targeting GBA/ARM7)? Give me a break.
Linux uses available memory for cache, and rather aggressively. All available memory can be filled with cached file blocks. This happens routinely on systems which have big randomly-accessed files open, like databases.
There's nothing wrong with this, except that, once in a while, Linux hits a race condition in prune_one_dentry, causing an "oops" crash, when there's an unblockable need for a memory page and something is locking the file block cache.
This is one of the Great Unsolved Mysteries of Linux. Linus wrote about it in 2001 ("I'll try to think about it some more, but I'd love to have more reports to go on to try to find a pattern.. "). As of 2009, this area is still giving trouble. The locking in this area is very complex.
As has been pointed out, prefetched data is dropped if the RAM it occupies is needed in an infinitesimal amount of time, is your life so short, or your tasks so time sensitive that 10 or 15 ms is really a big deal?
Keep on knockin'
https://robbiecrash.me
I was still worried about this having seen that my "Wine-dows Computer" was using a lot of my so called "memory". I was concerned that if my memory was full I would have memory loss or maybe that my Computer would forget the letters I had written in "Word". Now I understand that my computer just reads its documents very fast. If you are kind, could you analyse the issue of "keys boards" next? Because my key board only has a set number of keys, and I am concerned what will happen if there is a program that needs a key that I do not have on my key board. Thank you Arse
if everyone is so afraid of their computer memory being used to the fullest, why do these people install so much of it?
I've got 8GB of ram in the machine I'm on at the moment, and I want the OS and applications to use it to the fullest and most efficient extent possible at all times. I didn't install a 64-bit OS and 8GB of ram so that I can see 6GB free at all times.
I want a new quote. One that won't spill. One that don't cost too much. Or come in a pill.
It seems a secondary problem using SuperFetch, is that the HDD is woken up, or prevented from spinning-down when it otherwise could have been. ie. Bad notebook/netbook battery life. Anyone with insight into this?
in the last couple of years, Microsoft has become a major advertiser, and thus they now print anything Microsoft request of them.
If Windows refused to use your RAM that you had installed, now that would be an issue. But fully using RAM? This, on its own, is not something to complain about.
The last article specifically said RAM was nearly exhausted and there was excessive paging to disk. No one cares if RAM is full or not, if it's unused it's wasted anyway. The concern is having 85% memory utilization and then paging memory out to the pagefile.
The only data in the article you refer to was captured data from XPnet that said that >90% of RAM was in use in Windows 7 machines. There was no data saying it led to swapping, that was supposition.
http://www.computerworld.com/s/article/9158258/Most_Windows_7_PCs_max_out_memory
http://lkml.org/lkml/2005/8/20/95
A good OS uses all the RAM, and allocates available free blocks of RAM to the programs as required.
However using the greater part of a gigabyte plus paging to the hard drive just to display the desktop and run the low level functions is inexcusable and points to either a) memory leak b) the OS is doing something legitimate you are unaware of, like indexing files, etc c) the OS is doing something illegitimate like sending the contents of your hard drive to someone in Redmond, the NSA/FBI or the RIAA/MPAA or d) your system has been compromised by a virus. I can't really think of any other possibility.
Seven puppies were harmed during the making of this post.
Isn't this how RAM is supposed to utilized anyway? I don't want my OS flushing out RAM if I'm just going to use the same data later on.
My 2.0Ghz core 2 duo w/ 4 GB ddr2 has rarely risen above 70% and normally hovers at 30%
there are 10 types of people in this world, those who read binary and those who don't. which are you!
!SuperFletch
Both articles miss some very big and important points. Back in the day of Windows 2000 and XP, the Task Manager chart reported the memory comit charge. Basically, that was the amount of memory applications (and Windows) requested allocated. This does not mean that much memory was actually used, but with the exception of very badly written/buggy programs, it should be close. As a rule of thumb, if you look at that and see that your commit is significantly larger than your RAM, you know you're probably in trouble and will be very reliant on swap.
Windows Vista and 7 report something completely different. The chart shows ram memory used minus cache, an almost useless metric, but it does not indicate how much 'total' memory, real and virtual, is allocated. If you look at the screenshot in the ars aritcle, you will see that the commit charge is over 3GB. That's a lot of memory, and doesn't include cache!.
At the end of the day, however, a bare bones Windows XP would require about 120MB of memory, whereas Windows 7 is around 1GB. That sounds like a big difference, but we are talking several years of new features and eye candy. Ultimately, when you drill it down, it means that Windows 7 requires $20 more worth of memory. An insignificant issue, so long as you keep that in mind when designing a system for Vista / Windows 7. (ie, make sure that any computer or device destined for those OS's have at least 2GB of ram)
The issue is not a simple one.
On the one hand it's potentially a good idea to use "unneeded" RAM to pre-fetch possibly useful in the future disk data.
But a whole lot of apps were written without that "feature", so a lot of them already pre-fetch data. Now you have twice the amount of RAM tied up, for no benefit.
And nobody can predict the future, so the pre-fetching is speculative at best, and has no way to compensate for other tasks the user may double-click into competion with ones being pre-fetched.
Worse yet, a lot of apps look at the amount of free RAM when they decide whether to prune their working set or make other cache/purge decisions.
If all of a sudden the OS reports less free RAM, all those apps are going to make the wrong decision.
In any case, if you want to compare OS cache performance you might at least try to use the same compiler and the same language on both machines.
That's an entirely irrelevant strawman. Windows these days means Windows + Visual Studio for development, and Linux means Linux + GCC.
This is my sig.
These days I rarely see people putting together a system with less than 3-4 GB of memory, often as much as 8GB - and this goes for laptops as well. So if windows 7 wants to do something useful with all this memory, I say let it. My laptop runs W7 with "only" 2 GB of ram, but it runs everything I throw at it in a heartbeat. It should be mentioned that I'm not a gamer at all (except for the occasional round of minesweeper ;)), but still; your game won't utilize those 8 gigs of ram, at least not for anything really useful...
Smoother user experience by caching those files accessed on a regular bacis is a big plus in my book.
As someone commented on the last story a couple of days ago about this, if you don't want all your memory to be actually used, pull some of it out and put it in your desk drawer. What, you do want it all used? Well, that's what Windows 7 is doing, using all of it all the time, rather than leaving some of it unused much of the time. Oh, you only want it used for certain purposes? Why? If it's not being used for anything at the moment, using it for something is clearly better than that. And that's what Windows 7 (and Linux) do! If a more important use for it comes along, it repurposes it for that.
When will Microsoft and overbearing people get this: _I_ dont NEED harddisk reads in the middle of my activities. HDD activity is even WORSE than filling memory with crap, and I tried to hunt down all the services in Vista that made my HDD trash now and then, but had to admit defeat and go back to XP. In the end, ProcMon didnt show the last culprit processes trashing my disk so Vista had to go. I sure hope its not like this in Win7, but the fact that SuperFetch is still there, leads me to think the other 5-10 other silly processes must be also. So Ill stick with XP for now thank you very much...
Because I dont want to see my HDD spinning with activity while Im supposed to be working with other stuff. Vista had massive amounts of processes like SuperFetch and about 10 other such processes sucking your harddrive at any moment, not just while idling. It was a nightmare and not every process could be tracked with ProcMon, so I went back to XP. If Win7 is anything like that, I will _never_ use Win7.
Filling my memory is fine, as long as you give me the option to disable your "clever" algorithms (no I dont NEED it!! I need my computer to do what _I_ want it to!)
All good operating systems do this. My Mac, for instance has "inactive memory", which is not exactly the same as Windows, but close enough. If your memory is free, it's not doing anything for you. End of story.
I still cannot find the droids I am looking for...
With older laptops and netbooks ram is typically between 1 - 2 gigs. Guess which OS runs better and does not swipe to the hard disk constantly?
http://saveie6.com/
While catering to the Apple fan-base a little too much for my tastes -- hits it right on.
It is scaremongering.
.
Cache is there for a reason -- idle RAM is useless RAM. Now, do I think that Windows allocation mechanism for idle RAM is right on? Of course not. It could use some tuning. It could have used some tuning since XP -- but is idle RAM stupid? Yes.
Anything that can update the pipeline between process/thread interaction with data before it has to go to disk -- is preferred.
However, Windows needs to be smart about what it caches and keeps in the pre-fetch. Frequently used and accessed rather than conditional stale.
That's the point.
Most gamers had to turn off superfetch in Vista, it did not do a good job releasing memory from the cache when a game needed it.
I hope that someday we will be able to put away our fears and prejudices and just laugh at people. - Jack Handey
Memory leaks are the problem, especially with legacy software where the vendor is long gone. It is really annoying when a program is so badly broken that you have to feed it a command string of six numbers in octal every 108 minutes to purge memory or the bloody thing crashes.
Just like CPU utilization, idle RAM usage is a terrible performance metric. I'm constantly amazed by all the people that want to keep CPU and RAM usage to a minimum, particularly on servers. When I worked in a large enterprise I used to freak my Windows colleagues out by running my Mac OS X and Linux servers at 100%. It's not the % number of use, it's the loads that matter and learning how to size a server is more complicated than the Windows Task Manager.
In an ideal world your system would use every scrap of it's hardware to complete each task as quickly and efficiently as possible.
The constant disk trashing in Vista & Windows 7 - is the ultimate Achilles heel for these OS's. You can fany it up with your wiseness about coding until you turn blue from the waiting, it still makes the machine hopelessly slow, not to mention the mental pain aquired from the constant disk-trashing-sound. Not to mention the ever-lagging-soggy response you have because the harddisk is "doing something else all the time".
Why is it, that Linux with X11 & Gnome - takes less than 27 seconds to boot on a BRAND NEW computer, and the SAME brand NEW computer...Windows 7 fights itself through disk-trashing-hell+preload-to-infinity for 5-7 minutes? I was READY for windows 7, I heard good things about it, I tried it for a WHOLE WEEK...until I almost caved in, and even though it was HELL to get all my hardware up and running with Ubuntu 9.10 (which is the shitties Ubuntu yet, hardware wise)...I STILL prefer to run Linux...compared to almost wanting to KILL my computer over the constant disk-activity!
I know I can turn it off, but Microsoft turns it ON every freaking update anyway. I'm also tired of the constant nagging - on what I should have ON / activated / turned off etc...after every update (which is nearly every day), and constant nagging about my software trying to run (because I want to run it).....MY GOD WHY CANT MICROSOFT return to Windows 2000 days....?
What this world is coming to - is for you and me to decide.
Seriously, PAE? Come on now...
Even with PAE, then yes, you get the privilege of having your 32-bit OS running on 64-bit hardware access more than 4GB of RAM, but why? Haven't gotten a working crack of Win7?
At this point in the game, those that still run 32-bit OS's on hardware from 2 standard lifecycles ago just need to give it up and stop. 64-bit is where it is at.
0100010001101001011001 0100100000011010010110 1110001000000110000100 1000000110011001101001 0111001001100101
Except PAE is supported on all Pentium Pro and later Intel CPUs.
I don't know where you get the idiotic idea that it only works on 64-bit hardware.
It comes down to many people arguing that memory not used is wasted memory, I see. But the problem with that is that your computer is always trying to second-guess you and loading stuff off the HD, and when it guesses wrong and you load something completely different that uses a lot of RAM, it just wasted time loading from the HD.
It just amounts to the idea that simple is better. Load exactly what I need to run the OS plus whatever programs I am running. No more. When I want to load something, I don't mind it taking a moment or two to load; it's slowing down loading other stuff I don't need instead, so why doesn't it just load what I ask it to?
It just stunned me how much faster Vista and 7 are when Superfetch is disabled. Not only do you not have the problem of the disk thrashing about all the time, it actually made my programs that I ran load *noticeably* faster.
I have this suspicious feeling that if I were able to disable OS's silly "caching" feature completely, my computer would be even faster.
what on earth? what program do you have to feed octal numbers to so it purges its memory?
I agree, and it's amazing to me that all this hubbub doesn't surface around other areas where this is happening. OS's are using the GPU more both for UI and accelerating computing-intensive tasks. They use unused network bandwidth to trickle down updates and other resources from the Internet.
I suppose people will bitch if an OS uses idle time on one of 3 unused CPU cores? Or recording video of you while you're not using your webcam?
Oh wait, strike that last one.
Not really, but there are some reasons why I dislike Superfetch. Note that I'm considering this from Vista - I don't know how much of this has changed with 7.
Perhaps the main thing I dislike is the increased disk noises when caching. Unfortunately I do have a loud disk (actually I like it for a number of reasons, but I won't go there) and, with a lot of free RAM, you can expect the disk to be churning away for a while when... you're not actually using it. Especially annoying when you've just used a lot of memory then released it (ie quit a game). Perhaps the most annoying situation for me is when I'm doing 7-zip compressions in the background, using large dictionaries, after the compression, Vista would start going to work bashing the disk, filling up this RAM, only to drop it when I compress the next thing.
I'm not sure whether this sort of extra disk load also affects its lifespan. Probably not, or maybe the extra seek requests might cause negligible difference to the life of the disk arm, I don't know. It probably does have more of an issue with Green drives though, especially those that go into resting state when not used - I've heard they wear out with head parking etc. Unfortunately, due to the fact that you cannot really configure Superfetch, you're stuck with this behaviour. I use a green drive as a large storage medium, and thus, have little care about its performance, so although Superfetch is probably most effective on this drive, I really don't want it to be acting on it.
Other things include the fact that it can't predict the future, and is really controlled by an application, and does some rather dumb decisions at times IMO - I've seen it trying to cache movies before. Again, due to lack of configurable settings, you can't tune it in an attempt to make it smarter.
How fast a computer is, is also largely dependent on how a user considers it, and it's difficult for machines to really predict these things.
So if you don't have much free RAM, it's not as effective. If you have heaps, there's more load on the disk (although this may be considered "idle load").
Personally I have the applications I want accelerated installed on a Ramdisk. It's probably not as efficient as prefetching, and has a number of issues, I know, but it should eliminate the primary performance limiting factor, a slow disk seek. And it personally works quite well for me that I don't use Superfetch.
It seems like the problem lies in the same crappy logic handling memory in Windows 7 as in Vista. Superfetch can work but the logic has to be extremely good and Microsoft arent capable of such feats.
People notice their computer slow down to a crawl, look at memstats and see most memory used. See that little disk light illuminating bright as a star and condlude something is probably wrong in memory world. The problem isnt that most memory is used, its that its in use by a schizofrenic alzheimer despotic whirlhead.
HTTP/1.1 400
Sorry, just trying to make the "LOST" fans laugh over the silly deadman switch thing which involved typing numbers in every 108 minutes. It made me think of some NT4 machines with crap third party software on them that needed a reboot every week or they would run out of memory and crash.
The only thing that you can conclude was that your experience indicated that VS on Windows didn't perform as well as GCC on Linux. That's all.
Actually, no, that's it. The preferred way to develop in C++ on Windows is using Visual C++, and the preferred way to write C++ on Linux is using gcc, so, its entirely reasonable to compare the entire stack, just as much people now compare the Linux Apache Php stack to Windows ASP.NET.
This is my sig.
Yeah, you're right. Definitely from the UK.
Well, unless I have unlimited bandwidth, I don't want my OS downloading crap or my web browser pre-loading web pages. There is a downside to doing more work than normal, so if anyone has a legitimate complaint, it's about the extra power and wear this pre-reading of hard disk content results in (and maybe even wear on the memory, though I doubt it's even measurable).
Heh, maybe we should bitch that the OS uses the entire display, even when there's no window in some portion of it. Or that it caches things on the hard disk.
Like being some sort of "trash folder" easy to acess on the control panel, where you can see exactly what files are being cached and be able to delete and put files there.
That would make it clear to the users how many ram is the superfetch using, and also allow em to add files when they actually need it instead of waiting windows to do so.
That would make the user have a better notion of "why i have low ram", because they would see the superfetch working.
How much performance does SuperFetch service really truly gain a user? Are there any solid numbers or tests on that question we can see??
I can also tell you what eats up more RAM than anything I have seen currently in Windows 7: That's the Windows Search service. What does the Windows Search service truly gain you, the end-user, performance-wise, vs. how much memory it consumes???
(If someone had solid undeniable tests that gauged the efficacy of either service (SuperFetch or Windows Search especially) vs. how much memory they consume, then I think we'd be on a lot more solid footing as to what is truly going on, and being gained in terms of better performance, by the use of such services. Especially considering how much RAM they consume. Windows XP and below ran just fine and performed well minus the usage of such services, or has everyone forgotten that much here?).
In the end, I suppose it's all well and good to use the RAM effectively, but that's the key point: Is the RAM being eatem up by these services truly being used effectively for better performance by the Operating System, for the end user????
If it's not gaining you a lot better performance overall, the only people it's really benefitting are the makers of RAM chips, so they can sell more of them.
This sucks in Linux as well. /sys/block/sda/queue/read_ahead_kb
This is not
See `rpm -qi preload` on openSUSE 11.2
It tries to read ahead specific files and stuff intelligently
You know. I am tired of my stories getting rejected. I submit this story on Friday, it gets rejected, only to have Timothy post the same exact story on saturday. WTF. Not the first time this happened.
I do not support "The Man". I also do not support your irrational stupidity