Windows Vista and 7 have a few more tricks up their sleeves. Some of these features have no equivalent in
other OSes - which is why one should be careful to
apply "common" knowledge from other OSes or from
earlier versions. This is where Craig Barth (Randal C
Kennedy) failed.
As many have mentioned, Windows Superfetch is not just
a post-cache as exists in most/all modern OSes.
Superfetch is a pre-cache which will use
predictive heuristics to load into RAM applications
and even data files before you use them for the
first time. The heuristics is based on past behavior
of the user, time of day, day of week and current
activities.
Windows also has memory priorities . Memory
priorities influence what memory will be deallocated
first and which memory pages have priority on physical
memory. This is important especially for a desktop
operating system which must balance background
workload (throughput) against foreground
responsiveness.
Most OSes use a LRU algorithm when swapping (least
recently used). This is generally a good choice when
you value throughput - such as on a server. On a
desktop OS with asymmetrical requirements LRU has some
weaknesses.
Consider search indexing, disk defragmentation,
superfetch and other housekeeping tasks. These all
demand memory to run. Even if they execute with low
CPU priority and will yield CPU as soon as it is
needed, you used to risk these processes conspiring on
you when you went to lunch. When you came back these
processes had caused all memory allocated to
foreground processes (Word, Outlook, browser etc) to
be swapped to disk. The result was that practically
every task you performed after lunch would require
memory to be swapped in from disk. Not until you had
massaged the system would it be fully responsive
again.
This is where memory priorities offer a unique
solution on Windows Vista/7. The background processes
allocate memory with a lower priority. Hence, the OS
will *not* swap out foreground process memory (or will
swap it back ASAP) when a process require memory with
a lower priority. Instead the OS will choose another
equally low memory page to swap out.
This last point is where Randal C Kennedy
completely failed . He defended his claim that
Windows 7 computers maxed out memory referring to the
number of page "faults" - where memory required for a
process needs to be swapped in from page file. With
the Vista/7 memory model you cannot just look at the
number of page faults and go "OMG it is trashing!".
Higher page fault rates may simply be because
background processes are being referred to the page
file more often. You need to look at why memory
page requests "fault" and which processes are hit with
it. If it is the search indexer it is perfectly ok. It
certainly does NOT mean that the memory is maxed out.
The best of ZDNet, delivered
ZDNet Newsletters
Get the best of ZDNet delivered straight to your inbox



