Home and Links
 Your PC and Security
 Server NAS
 DVD making
 Raspberry Pi
 PIC projects
 Other projects
 Next >>

Speeding up your (WinXP 32bit) computer

PC speed-up

Why is my PC so slow ?

If you just loaded some new application or performed some 'update', and your PC suddenly slowed to a crawl, then the culprit is the 'last thing you installed'. To confirm, just use System Restore to go back to before the install (you always make a System Restore Point before installing something new, don't you ?). However, more likely it's just been getting slower and slower from 'day 1' (i.e. since the last time you reloaded the operating system), and you only just noticed this after using some-one else's PC which was much faster

Anti-virus applications are the cause of many unexpected 'slow downs', especially when a newly installed application first tries to 'phone home' or write into the Registry (if they are automatically blocked by your AV app. which means the app. has to 'time out' before handing back control to the user).

Older Anti-virus apps. also had a habit of grabbing 100% of your CPU (and 100% of the hard disk I/O) thus 'locking out' every other application whilst they performed a virus scan (Norton AV was notorious for this). Whilst you can switch from bloated commercial AV app's (like Norton) to lightweight Open Source (like Avast!) you just have to accept your Firewall and Anti-Virus 'overhead' as one of the drawbacks of using the Internet (and eMail).

You also need to watch out for 'application bloat'. As time goes on and your favourite application is automatically updated with many new features (and bug fixes) it's size creeps up. Ten years ago, Firefox (v1.02) was 4.6Mb, today Firefox (v37.0.1) is 39Mb - and all that extra code will use a LOT more RAM (10 years ago the developers would be running Windows XP in 512Mb with a 250Mb hard drive - now they are using 64bit Windows 8.1 in 16Gb with dual 2Tb hard drives).

Image processing applications are even worse - 10 years ago Adobe apps. would be hard pressed to edit a 10Mb photo - now they are happy to let you edit a 10Gb photo. In short, every application has a habit of expanding to fill every available byte of RAM in a 'current standard' PC, right up to the point where they start to hit limits (like 32bit Windows 2Gb app. limit = see 'Large Address Space' below) at which point they lock up or crash..

One of the worst bits of 'time-wasting software' is Windows itself. Of course you will have put a stop to many of it's useless 'services' and the notorious 'Indexing Service' (which claims to 'Index your files for faster searching' but makes minimal difference to search speeds whilst often 'hanging up' your disk access during normal running)

However Windows XP always keeps numerous records of every file you access, every application you launch and every USB device you ever plug in. Whilst some of this can be prevented (some is done by Services, such as WMI) much is done by the Kernel (and can't be stopped). Much of this data is kept in 'special' files spread around the system folders, but a lot goes into the Registry (where it contributes to 'Registry bloat').
This is all done 'to speed up the system'. For example, when Windows 'learns' what applications you use most frequently, the files on your hard drive can be 'moved around' to make the 'frequently used' quicker to load - and when you plug in a USB device, 'time can be saved' looking for a driver if Windows knows what driver was used for that device previously

The reality is that all this 'record keeping' simply slows down the system and (of course) time is lost checking for 'old' USB devices before looking for a new driver. Plus, of course, when Windows DOES start to 'move around' files, suddenly you can't get access to your hard drive ...

The result is that XP starts to slow down immediately after every re-install - and the longer your system has been running (since the last re-install) the slower it gets.

One of the more useless ideas MS came up with is 'pre-fetch' (and, from Vista onward, 'Super fetch'). The idea here is to 'make use of spare RAM' (i.e. any memory you are currently not using) 'to hold software you will be using soon'. In other words it monitors what apps. you use, then fills RAM with bits of those apps. based on it's 'prediction' of what you will be using 'soon'. Of course it's forever getting it wrong - and 'trying again'. So if your hard drive kicks into life every few hours frantically loading stuff into RAM, it may well be 'pre-fetch' having another go. This wears out your hard drive and consumes power - and is a real annoyance for laptop users. It makes almost no difference to the performance of your system, especially if you have a SSD.

In XP, to disable the Prefetcher, Run > Regedit, and locate 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters'. Modify (or create) the EnablePrefetcher and set it's value to 0 and the next time you start your computer, the Prefetcher component won't start. NB you can also get some disk space back by emptying the C:\windows\prefetch folder

Superfetch (Vista and later) is a Service, so can be disabled via Run > Services.msc.

Of course lots of this useless 'usage' information ends up in the Registry, where it contributes to 'Registry Bloat'

Whilst my Registry hasn't (yet) reached 2Gb, after 3 years my USB devices were taking longer and longer to be 'recognised'. A quick investigation showed that Windows was checking for one of over 140 'previously seen' devices each time I plugged a USB device in !!

Of course, if you haven't changed anything and your PC does suddenly starts to run really slow, you can assume that something has 'gone wrong'. Often it's some commercial garbage application trying to 'update' itself without telling you (and hammering your Firewall trying to 'phone home') or doing something else that's taking 100% of your CPU time (use Alt-Ctrl-Del to launch Task Manager and check).

If it's not that, then chances are your Hard Disk is on it's way out (go look in the logs at Control Panel / Administration Tools / Event viewer) i.e. that (or some other part of the hardware) is performing multiple 'retries' and 'timeouts' (often network or a USB device). On the other hand, if it's just been getting slower and slower over the last couple of years, continue below !

Note that on XP, every time your do ANYTHING that involves hard disk access, Windows will 'go away' and check ALL the attached drives - and that includes 'mapped network drives'. The problem with this is, if the networked device - for example your RAID back-up system - has 'gone to sleep' XP is quite happy to make you wait whilst it 'wakes up'.
Worse, if the networked device has gone 'off line', XP will 'time out' before performing whatever operation you are waiting for. So, if it's taking 30 seconds to 'open' C: and show the directory, now you know why ....

Windows 'locks up' after boot or on opening My Computer

Windows can 'lock up' during boot-up or when you first 'open' Explorer (eg double click on 'My Computer') for minutes at a time. This is because Windows will (try to) access each and every 'mass storage device' and 'mapped' network share that you haven't 'ejected' or disconnected'. If you are using a laptop, it also tries to restore the WiFi connection during boot-up.

Of course once it's discovered that the 'share' can't be 'restored' if will 'mark' it as 'disconnected' and stop trying - however that's no consolation if you have to wait 5 minutes at boot-up because you forgot to 'disconnect' all shares before shutting down.
Windows will collect information about every device before opening the 'My Computer' drive/file window. If a USB drive/network share is no longer available (eg usb stick removed, Server turned off / laptop used outside the home) Windows will typically wait 30 seconds for each single 'device' or share to time out.
The same applies to WiFi - if the 'old' connection is no longer available, it will typically take 30s to time out (sometimes, it keeps on trying 'after' boot-up - in which case 'Network Connections' window will be 'empty' (i.e. even wired connections are not shown))
Note that some 3rd party Drivers or Services also 'hang' the computer looking for their 'own' device at power-in (for example, the Epson scanner driver will hang for 2-3 minutes waiting for the scanner - which it 'assumes' is attached to your USB port - to come 'on line' during boot-up and before Windows itself loads).

The following Registry fix (from Windows 7) should eliminate the 30s time-out on 'disconnected shares'

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider] "RestoreConnection"=dword:00000000 "RestoreTimeout"=dword:00000004 "DeferConnection"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters] "SessTimeout"=dword:0000000a "ExtendedSessTimeout"=dword:00000000 "ReconnectTimeout"=dword:00000004

Trigger a 'cmd' script at power-down

A better way to stop 'missing' share time-outs (especially on laptops) is to disconnect all shares at power-down

Start by preparing the script (eg 'shareoff.cmd') with contents :-
net use * /d /y
(* means 'all drives', /d means 'delete the connection' and '/y' means 'don't ask user to press 'y' key)

To have Windows run this command file at power-off :-

Open a cmd window ('DOS box') and type 'gpedit.msc' to open the Group Policy Editor. Navigate to Computer Configuration | Windows Settings | Scripts (Startup/Shutdown). Select 'Properties' - 'Add' and 'Add a script'

Why does Windows keep forgetting my folder settings ?

If XP starts to forget your folder settings, delete the following registry keys :-


By default, Windows XP will 'cache' the Explorer settings for 400 folders. This made sense when hard drives rarely exceeded 300Mb. In todays world of Tb drives you need to increase this drastically

In Regedit :-
Find "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam"
Change the (hex) value of "BagMRU" to 1388 for 5,000 folders

If XP keeps forgetting your desktop folder settings, check the HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Program Manager\Restrictions, and look (or create) the DWORD value NoSaveSettings and set it to '0'

What's the simplest way of speeding up my PC ?

Well, by a clean re-install of the Operating System (eg using the 'Factory Restore' method), of course :-).

OK, that's just not a 'viable option' for most of us - even if we could separate our data from the XP system on C:, chances are we have forgotten where to find all those dozens of useful Open Source utilities etc. (that we can no longer live without) and even if we can find them, who wants to spends weeks re-adjusting all their 'preferences' from the re-installed defaults ??

Instead we have to disable all the useless Services, stop the auto-RUN's (especially those from rubbish applications trying to load themselves at start up and 'phone home' for unwanted updates) and otherwise get rid of as much bloat-ware as possible.

After which, the only way to speed up your system is to improve the 'Hardware' (slow downs are almost never caused by 'a fragmented hard disk', 'a virus' or an 'overloaded Registry', despite the attempts of the anti-virus and 'registry cleaning utility' vendors who try to convince you otherwise). However, before rushing off to pay $$$$ for the 'latest & greatest' Intel 'extreme' CPU, first you need to discover what's causing the 'bottleneck'.

If you are a 'gamer' then the 'bottle neck' will almost always be your Graphics card & nothing else. Trying to run games on a laptop or a computer using the motherboard 'built in graphics' is never a 'good idea' = and very few 'off the shelf' computers have decent (i.e. expensive) Graphics cards. Every new game expects the 'latest generation' graphics system - so a card that's more than 18 months old is already 'obsolete'

Use Alt-Ctrl-Del and look in the 'Performance' tab whilst using your computer 'normally'. If the CPU is 100% loaded 'most of the time' (and you are not running SETI :-) ) then you most likely have a software problem (unless your CPU is a Celeron running at 1GHz = in which case a new motherboard capable of supporting a multi-core** CPU might well help)

** you should at least have a 'dual core' CPU (this lets your application run on 1 core whilst the Windows 'kernel' runs on the other). Of course many modern applications are capable of taking advantage of multiple 'cores', so generally it's a case of 'the more (affordable) cores the better'. Windows XP Home supports 1 CPU chip whist XP Pro supports 2 chips (both XP versions are limited to a total of 32 cores = not that there are many 32 (or 16) core chips to be had :-) )

However it's much more likely that you will discover the CPU is hardly used at all ! .. but when you look at 'Physical Memory (K)', the 'Available' memory is 'low' and you have a 'PF Usage' / 'Page File Usage history' that keeps jumping up & down. This indicates that Windows is having to offload from RAM to disk and all that disk i/o - reading and writing the page file - is what's slowing you down. A high number of 'Page Faults' is a pointer to RAM limitations, so adding more RAM is usually the first thing to do

If you have plenty of free RAM, then the problem is (almost) always time-outs caused by hardware = the main culprits being your network link and your hard disk

Adding more RAM

Adding extra RAM is usually the easiest and most effective way to speed up your system (it's often the cheapest as well). Modern applications are total memory 'hogs'. Any photo (or video) application will grab all your RAM and then some - and the worst of these is Adobe Photoshop / Photoshop Elements ! So start by increasing your RAM to the maximum 32bit Windows XP can use (about 3.5GB) = so install at least 3Gb (better, 4Gb) of physical RAM.

On a 32bit system, RAM beyond 'Windows visible limit (typically 3.5Gb) can only be used as a RAM disk. However if your motherboard allows, it's worth fitting 8Gb so you can use the 'extra' 4Gb to deliver a lot more performance - either by moving '/temp' to the RAM disk or by simply placing your 'paging file' on the RAM disk (which gets you such massively high speed 'virtual memory' that it's almost as good as a 64bit system with 8Gb 'native' RAM) = see below for more details

In almost** 100% of cases, fitting more RAM is the best way to speed up your system !

**if you edit movies and playback 'stutters', check how much 'free space' you have on the hard drive used to store the movie file. If you are down to 10% or less, chances are your problem is 'fragmentation' - and this is about the only occasion when a 'defrag' might actually make a difference !

How much RAM should I fit ?

As much as your motherboard will allow. The 'slots' on most older 'DDR2' motherboards are limited to 1Gb or 2Gb 'sticks', however many had 4 slots - so you can fit 4Gb (or even 8Gb). Older laptops had only 2 slots, but most supported 2Gb sticks = so you can fit 4Gb.

Many manufacturers (Dell, in particular) never bother to 'update' their 'system specifications' when Intel releases a new CPU or when higher capacity memory devices start shipping. So if your computer was shipped before, say, 2Gb DIMM's started to become available, when you go to the Dell website to check what RAM eg. your 'Dimension 3100' supports, Dell will say '2 x 1Gb', whilst in fact, the 'real' max. is 2 x 2Gb i.e. 4Gb (I know, I'm typing this on an ancient Dell Dimension 3100 with 1x 1Gb + 1x 2Gb = 3Gb** :-) - be warned, however, that not all motherboards allow 'unequal' RAM (the older Gateway, for example, simply 'locks up' with not even a 'beep' code if it discovers 'unequal' RAM sticks 'paired' together in the 'A' (or 'B') slot pair).
** There was no point in fitting 4Gb to a Dimension 3100 - the motherboard chip-set only supports access to the first 4Gb of address space, which means any RAM 'mapped out' to make way for i/o space is 'lost forever' and the maximum real RAM you can ever access is about 3.25Gb = see below

To discover the 'real' maximum RAM supported by your motherboard, you need to discover the 'chip-set' used and then visit the manufacturers web site (usually Intel) or check the 'forums' for other owners of the same system

Much the same applies to which CPU's are supported (i.e. any CPU released after your computer started to ship is likely to be ignored - but CPU's are not as 'socket compatible' as RAM and heat sinks may be another limit = see later)

All modern motherboards support 4Gb (or larger) sticks and have chip-sets that allow software access above the 32bit Windows '4Gb limit'. Whilst fitting more than 4Gb may seem like 'overkill' for a 32bit XP system, the memory above 4Gb can be used for a RAM disk allowing high speed video edit (by placing /temp on the RAM disk) or improving general system speed (by using it as a paging file)

The motherboard BIOS also plays a part in the RAM supported - some manufacturers will deliberately limit the RAM 'seen' in order to 'differentiate' their 'low-end' product from a 'higher end' one - so just because your chip-set supports 2Gb (or 4Gb) sticks, don't assume your BIOS will let you use them !

Always remember that, in the Microsoft world, your Windows Licence will limit the amount of RAM that can be 'used', no matter how 'clever' your hardware

(-) The Windows 32bit RAM limit

What's the "4Gb" limit ?

It's a Microsoft Licence limit, and nothing else. For some in-depth explanation of RAM limitations imposed by MS Windows, see here (Vista focused, but scroll to end to see XP notes)

The address space available on Intel x86 CPU chips is 36 bits (== 64GB) and the CPU chip can 'map' 32 bit software into this address space by using address translation tables. This mapping is known as Physical Address Extension, or 'PAE'.

So although each 32 bit software program (Windows itself or any application) will be limited to a 4GB address space**, the PAE tables mean that you can have 16 programs each using 4Gb of RAM with them all 'resident' and running at the same time on a PC with 64Gb of RAM !

... and this is exactly what you will find when running '32 bit' LINUX or Windows 2003 Server. But this is NOT what you will get with Windows XP Pro.

** Of course, in the Microsoft world, having a 'per application' 4Gb address space does NOT mean your application can access 4Gb of RAM (of which more later)

So what's the problem ?

Well, at power-on, the PAE tables are empty, so the BIOS runs in the 'bottom' 4GB address space (aka 'real mode'). One of the most important things the BIOS then does is to 'allocate' address space to I/O devices.

If the whole of the bottom 4GB is filled with RAM, then some of this RAM has to be 'mapped out' of the bottom 4GB so that "an I/O device"** can be given part of the low 4GB address space. This 'mapping out' is a relatively 'coarse' affair based on 'what hardware COULD be installed' with huge 'chunks' of low address space being 'given away', especially to 'devices' like PCIe 'slots'.

In the PAE world, this 'mapping out' doesn't matter - all that mapped out RAM can still be reached via the PAE tables (assuming your PC has less than 64Gb RAM, so there are some 'spare' addresses)

**Note that the BIOS performs the 'mapping out' based on the motherboard's 'resources', such as PCI slots, and NOT what is actually in those slots (see Intel chipset 4Gb support).

So, whilst you might think it's "acceptable" for a system with a PCIe 1Gb Graphics card to have 256Mb (or 512Mb) of RAM 'mapped out', those with 'on-board' graphics (typically using no more than 8Mb of RAM) are no better off - the I/O address space will still be 'reserved' for the PCIe slot even if no graphics card is actually present in that slot !

This might lead you to think that you can get access to 'more RAM' if you 'turn off' Hardware in the BIOS - and (in theory) that's correct - except, of course, I've never actually come across a BIOS implementation that allows you to 'turn off' the PCIe slots :-)

After the BIOS has finished 'mapping out' RAM to make way for all the motherboard PCI slots etc. (which are 'mapped in' to addresses below 4GB) the 'mapped out' RAM is given addresses above the 4Gb boundary and the BIOS 'hands over' to Windows .... and this is where things get rather 'complicated', somewhat obscure, and (in most peoples eyes) 'goes wrong'

How does Windows XP allocate the address space ?

Only the Operating System (the 'kernel') needs to access the I/O devices. This means that, IN THEORY, only the Operating System needs it's 4GB of RAM space reduced by the I/O space, whilst each application 'should' be able to 'see' it's own 'private' 4GB address space (all of which could all be filled with real RAM, or, if less than 4GB of real RAM exists (or is available), the rest of each applications visible 4GB address space could be filled with 'virtual memory' to 'top it up' to the limit).

Of course, when an application (running in it's own private 'user mode' 4Gb address space) wants to do some i/o (eg write to the display, read/write the hard drive etc), since it can't 'see' the i/o space it has to 'hand over control' to the Operating System (running in 'Kernel Mode') to do the actual i/o. The Kernel would then use the PAE tables to 'transfer' the data block to (or from) that applications 'private' address space and then hand control back to the app.

Needless to say, this is not how Windows 'works' at all !. By default**, to 'save time' when 'switching' between 'user mode' (application) and 'kernel mode' (the operating system), some brain dead Windows programmer decided to simply 'flip' the top address bit !!

So each application 'exists' in a 4Gb address space with access to RAM in the lower 2GB of that space and with it's upper 2Gb of address space being 'mapped' to Kernel space. Of course the Operating System space also includes the i/o space - so Windows itself has access to 2GB of RAM minus the I/O space !

** The default 'split' can be changed by using the '/3GB' switch (of which more later) .. this switch (when used without the /USERVA qualification), moves the user/kernel 'split' point from 2Gb to 3Gb (i.e. it allocates the low 3GB address space to user mode and the top 1GB space to kernel mode)

Further, since Windows XP is limited by Licence to the low 4GB address space, any RAM 'mapped out' of the low address space is 'lost' to the system (in XP, it is simply ignored - in Vista (and later) the NT Kernel code actually enforces this Licence limit during the boot process, presumably by 'wiping' the PAE address tables setup by the BIOS)

There seems to be a lot of incorrect information, even from Microsoft itself re: the "4Gb limit". Ever since XP sp2, the limit imposed is the 'allowed address space' .. which is NOT 'allowed RAM'. The actual 'allowed RAM' is "4Gb MINUS the i/o space". Since i/o space is typically 0.75Gb, the actual maximum 'allowed RAM' that can ever be 'seen' by the XP user is typically 3.25Gb.

Note that Microsoft applies this Licence Limit to all 32bit 'consumer' versions of all it's operating systems (I'm not counting the 'cheap' versions of Windows offered to the developing world that are limited to 2Gb, nor do I count the 'cheap' Web Server edition (which was also limited to 2Gb)

To stress once again, 32bit Windows is actually limited to 4Gb MINUS the I/O address space (i.e. typically about 3.25Gb), despite the fact that even Microsoft itself (on it's own web site) will state this limit to be '4Gb RAM'.

How close to the 4Gb limit can you get ?

From Windows 2000 up to & including Windows XP sp1 (with the /PAE switch**) Windows would typically 'see' some of the 'mapped out' RAM and users could often get up to 3.87Gb on a 4Gb system. It was only in XP sp2 that MS 'disabled' PAE (and we lost access to 1/2Gb).

**In Windows 2000, the 'standard' kernel is Ntoskrnl.exe. The one with support for PAE is Ntkrnlpa.exe (the multiprocessor PAE version is Ntkrpamp.exe). To select a PAE-enabled kernel, you must boot with the /PAE switch in Boot.ini.
Plainly, to access the 'extra' RAM, the PAE tables had to be used in order to 'reach' the RAM mapped out by the BIOS (to addresses above the 4GB address). One mystery is why Windows was limited to 3.87GB (i.e. why was it unable to 'see' all the 'remapped' RAM and reach the full 4Gb ?). The other mystery is why it took MS so long to realise that they were exceeding their own "Licence limit" ...

Of course, the (32 bit) 'Server' versions of XP (Server 2003 etc.) all use PAE. For example, Microsoft Windows Server 2003 Enterprise Edition supports up to 32Gb and the 32bit Windows Server 2003 Datacenter Edition can access the full 64Gb address range (so 64GB RAM, less the i/o space, of course).

It may be of note that the XP based '2003 Server Web Edition', whilst supporting PAE, was restricted to 2Gb of RAM (if that's 2Gb address space, then both the system and Web Server software would have to run in about 1.25Gb RAM = which may be one reason why all 'low end' web servers run a version of UNIX with the Open Source 'Apache' webserver (which doesn't suffer from artificial memory restrictions))

It's also to be noted that the (32 bit) Windows 7 'Starter Edition' supports 2Gb PLUS the I/O space (which makes it doubly annoying that the other 32bit Windows 7 'Editions' are limited to 4Gb MINUS the I/O space)

Why did Microsoft remove PAE support from Windows XP in XPsp2 ?

In a word, "BSoD">. Whilst the early versions of 32 bit Windows XP were perfectly capable and happy to use PAE (and, at least in theory, access a full 4Gb of RAM), the typical 'clever' Direct X Graphics card 'kernel mode' drivers written between 1995 and about 2003 were not.

In 'the old days' the typical 'gamers' graphic card driver would 'ignore' PAE addressing and 'target' only low (i.e. non-remapped) memory. This was the main cause of the BSoD system crashes that plagued Windows XP in those early days. To 'fix' the BSoDs, Microsoft limited access to RAM beyond the 4Gb address to those who could be counted on to never install any sort of 'accelerated' gamers graphics i.e. Server users.

For maximum speed, the I/O drivers (in kernel space) must be able to 'see' both the I/O address space as well as the user address space 'at the same time' .. and all this must be within the 4Gb limit

To eliminate the BSoD's "caused by non-PAE aware device drivers" Microsoft removed PAE support from the XP HAL in sp2. As a result, both 'PAE ignorant' and 'PAE aware' device drivers would now work 'correctly' but (of course) would only ever be called upon to access RAM in the low 4GB ('non-PAE') address range.

The drawback was that this not only removed any 'incentive' for device driver writers to 'fix' their buggy code but actually made it impossible for them to actually test their drivers in PAE mode on a Windows XP Pro sp2 (or sp3) system

By the time Vista and (especially) Windows 7 (32bit) were released (with a fully PAE functional kernel and HAL), most Graphics card manufacturers (except NVidia) 'understood' the need to support PAE addressing above 4Gb. However, by then MS had introduced new boot code (in the NT OS Kernel) to enforce their 'max. address' Licence limit. Although this code was aimed primarily at Windows 7 'Starter' Edition - to limit it to 2Gb - it also limited other (32bit) Editions to the 'non-PAE' max address limit of 4Gb (i.e. to about 3Gb of real RAM)

What does Microsoft say about the RAM limit ?

For more information, see MS KB888137 and see here.

Microsoft seems happy to mislead users when listing the 'Physical memory limit' for various versions of it's Operating Systems. If you scroll to end of the MS article linked above, you will find comments about Graphics cards and RAM disks which implies that the amount of 'hidden' RAM is determined by the Hardware drivers installed.

This is "at odds with the truth" - the limit on accessible RAM is a result of the Windows kernel / HAL simply 'adopting' the BIOS 'reserved' space mappings (and discarding all RAM that the BIOS mapped beyond the 4GB address) i.e. the RAM 'limit' is 'decided' well before any actual Windows drivers are loaded

It's worth noting that whilst the BIOS may 'reserve' huge chunks of unnecessary space below 4GB, it does correctly map, and report, all your actual physical RAM. If the system RAM 'depended on devices installed', a user with a system using motherboard graphics might well expect the Kernel to 'un-map' the 256Mb of i/o 'reserved' for an (empty) PCIe slot Graphics card and 'map back in' some of the RAM that was 'moved out' by the BIOS.

Whilst UNIX based Operating Systems do exactly that, Windows never did. As anyone running Linux on the same motherboard will soon discover, Linux correctly uses PAE - so when running on a motherboard with a PAE capable Northbridge, Linux users will actually 'see' the full 4Gb (as well as all the actual I/O devices). However, even after 10 years of bug-fixes, Microsoft programmers never did bother to fix the XP kernel to use PAE correctly.

In short, in XP Pro sp3 the amount of 'visible RAM' has nothing to do with your ACTUAL Graphics Card's on-board RAM and everything to do with over-aggressive BIOS address 'reservations' (and Microsoft's ancient fears of PAE incompatible drivers causing BSoD's)

This note last modified: 5th Mar 2016 06:56.


(+) Getting my RAM back

(+) Using missing RAM

(+) Application RAM limits

(+) RAM disks

Where to place the swap file (pagefile.sys)

By 'default', Windows uses whatever drive has the most space for the swap file (pagefile.sys). Typically, you want it to use the FASTEST (non SSD) drive - or at least one that won't result in data transfers 'clashing' with your applications (which usually means 'any drive except C:'. Of course the 'ideal' place for a pagefile is in RAM that can't be used by Windows (i.e. in the 'invisible' RAM mapped above the 4Gb XP Licence address 'limit' and accessed by a 3rd party RAM disk driver)

WARNING - when your computer 'sleeps' it just turns off the hard drives etc. but the RAM is left powered up. However when your computer 'HIBERNATES' the system RAM contents are stored onto hard disk and the whole of the RAM is turned off !! RAM used by a RAM Disk is not seen as part of the system, so when your computer 'HIBERNATES', the RAM Disk contents - which would typically include the page-file and temp files, will be lost when the RAM is turned off during hibernation. When XP 'wakes up' it will crash as soon as it discovers it's page file has been lost (applications will likely crash when they find their temp files have been lost) !

The VSuite RAM Disk driver has a 'save contents to hard disk on power down' option ... which (should) mean it will also preserve the contents over a Hibernate (I suggest you test it before relying on it ..). If your computer won't recover from hibernate, just allow it to sleep only

The pagefile settings are 'hidden' in Start, Settings, Control Panel, System icon, Advanced tab, 'Settings' button (in Performance box), then in the Performance Options window, Advanced tab, 'Change' button (in the Virtual Memory box). Select each drive letter in turn and enter the 'Custom size' of the paging file allowed (or set 'No paging file') for that drive

Stop Windows XP wasting your time deleting the paging file at power down

For 'security'**, Windows over-writes the pagefile with 'zeros' during power-down = which is one of the many reasons why Windows often 'hangs' at power off (yes, it's trying write 4GB of 0's to the pagefile at the same time as every application being told to 'terminate' is trying to save it's status - and all this at the same time as the hard disk is told to power down)

** It's just a total waste of time letting Windows clear the paging file - any criminal that gets access to your hard drive has all they need to steal all your on-line user / password details etc. just by looking in the web browser 'saved password' file without having to dig through Gigabytes of random chunks of application code in the 'swap file'. Of course, if you use a RAM disk as your (only) paging file, the contents will vanish as soon as power is lost to the RAM anyway (not that this will stop Windows 'clearing the page file' first :-) )
To stop Windows wasting your time clearing the page file at power down, locate the Registry entry :- "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" and change the value of 'ClearPageFileAtShutdown' to "0"

Moving FireFox cache to RAM

This does not actually need any sort of RAM Disk driver - in FireFox, all you need to do to move your caches to RAM is to type 'about:config' in the address bar and change a few settings.

Once you get into about:config, find the 'browser.cache' settings (type into the filter bar at the top).Modify browser.cache.disk.enable and set it to 'false' (double clicking on it should flip the setting).
Find browser.cache.memory.enable and set it to true, then set the 'browser.cache.memory.capacity' as follows :-Start by right clicking anywhere, click 'New' preference, and choose 'Integer' value. Name the new preference 'browser.cache.memory.capacity' and hit OK.
Then type in the size (in kilobytes) to limit the cache eg. 100000 = 100,000 kilobytes (100 megabytes). A value of -1 will tell Firefox to dynamically determine the cache size depending on how much RAM you have.

The danger, of course, is that on a 32bit XP system FireFox, a 32bit applications, will be limited to 2Gb of address space. Needless to say, if you let it, it will soon be using all of that 2Gb and then it will crash.

What RAM Disk software exists ?

Don't waste your time with Microsoft's own brain dead RAMDisk.sys driver. It is only capable of accessing the same RAM as Windows itself, which makes it worse than useless (i.e. it steals RAM from the system, forcing apps. to use virtual memory). Instead you need something rather more clever. Your RAM disk driver has to access the unused memory that has been 'mapped' above the Windows 4GB Licence limit.

A1. My first choice for Windows XP is Romex Software's "VSuite Ramdisk (Free Edition)" HOWEVER it is no longer available from the Romex Software website == you will have to search for it = and watch out for the adware phishing scum (you want the VSuite.Ramdisk.Setup.zip (742 kb) package and NOT the some spam downloader .exe that many 'freeware' sites will try to fool you into installing / running).

In VSuite Ramdisk, the memory mapped to addresses above the XP limit is 'OS Invisible Memory' (or 'IM'). The big advantage of VSuite is that it can be setup to automatically write the RAM Disk contents to an 'image file' during power-down (and restore at power up) so you can still 'hibernate' (which is why it's my 'first choice').

Of course it can only access RAM above the Windows 3.5 Gb 'limit' if your motherboard has the i946 chip-set or later (which many older XP computers - especially laptops - do not).

Note also that VSuite Free Ed. only supports Windows 2000 and XP, and whilst you can set-up multiple RAM drives, it limits the sum total of RAM used to 4Gb.

The VSuite set-up instructions, can be found here (if you have 4GB RAM and VSuite shows "available IM ram = 0", your motherboard chip-set is too old)

A2. The Open Source ImDisk is another good choice - see here for how to configure it

Like all Open Source apps. it has so many options that you may never stumble across a 'set' that actually works as you hope.

A3. The commercial SuperSpeed Ramdisk Plus (was $50, now $99.95) is similar to VSuite (it calls memory above 3.25Gb 'Unmanaged' memory) and is Vista compatible

Note - before parting with any money, check CAREFULLY what RAM the product is capable of using.
At least one well 'hyped' product (Dataram RAMDisk) can use physical RAM 'above' 4Gb but (apparently) is unable to use the 'invisible' RAM below 4Gb that was 'mapped out' by Windows.
Note that the last version of Dataram RAMDisk that supported XP was Version V4.3.0.RC1 Released October 1, 2013, and whilst older versions supported up th 4Gb for free, the current 'free' version is limited to only 1Gb.

Needless to say, as soon as you allocate 4,000Mb of your 4Gb RAM disk to the swap file, Windows Explorer will pop-up the 'Low disk space' warning. To stop this annoying (and useless) pop-up you will need to add an entry to the Register

To disable the Low Disk Space warning in XP/Vista/Windows 7, launch "regedit" and open HKEY_CURRENT_USER\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Policies\ Explorer\ In Explorer\, create a New DWORD Value (click "Edit," select "New" and choose "DWORD Value") name := "NoLowDiskSpaceChecks" Edit the value from '0' to '1'. This setting will only be activated after you next restart your computer.

Improving boot-up time

As you continue to use your computer, you will note that it takes longer and longer to 'boot up'. The MAJOR reason why this happens is that just about every software product you ever install decides it has to 'load' part of itself during the boot sequence (and MS Office is one of the worst "culprit's" in this).

For Vista and later, applications don't even have to set themselves up to pre-load  - Microsoft 'SuperFetch' (and 'ReadyDoost') will do it for them !

All this pre-loading is a total disaster to your boot time - for a start it results in megabytes of un-necessary hard drive read operations, then it fills up your RAM (so that Windows is forced to 'off-load' parts of itself to Virtual Memory slowing your system down even further) and finally, after the boot has completed and you start using the system, all this pre-loaded but 'unused' code has to make room for the applications you are actually using ... in other words, all the pointlessly pre-loaded stuff just ends up being written to the Paging File back on disk

Applications 'pre-load' components for two main reasons .. one is so that when you actually come to use that application, their 'launch' time is 'faster than the opposition' ... and the other is so they can do 'background checks' for updates (which, of course, results in the boot process 'hanging' whilst dozens of 'update checkers' attempt to contact their own web sites ..)

Even Microsoft plays the 'Prefetch' game, although (in theory at least) all the windows system components being 'pre-fetched' early in the boot sequence will all actually be used later in the sequence

To put a stop to the application pre-fetch game, in a CMD widow type 'msconfig' .. then have a look in the 'Startup' tab and remove anything that's not actually vital. What's vital are your anti-virus, firewall and Registry protection (WinPatrol) software and anything you want to 'auto-start' after a power cut. What's a waste of time are all the Adobe components, all MS Office (OS9) pre-load components and everything from any other 3rd party

I have exactly 5 entries in my Start-up tab - the other 2 not mentioned above are Avast 'update check' - that's the one update check you DO want to run at boot time :-) - and a multi-media 'anti-DRM' (CD/DVD Region-free) tool

Once you have removed the pre-fetching trash from Startup, you should use the HiJackThis tool, which is easier to use when hunting for the rubbish 'update checkers' that typically appear as a 'Service' set to 'run' at power-on (msconfig's Services tab shows all services, not just those set to 'run' at power-on)

What about ReadyDrive / ReadyBoost (and SuperFetch) ?

Note that ReadyDrive and ReadyBoost are only available with Vista and above.

When USB 3 speed (5 Gbps) memory sticks started to become available, PC's gained a new high-speed data storage option 'on par' with your hard drive (SATA is 1.5Gbps, DATA II is 3Gbps and SATA III 6Gbps). Whilst real data rates depend on the actual device, memory sticks have no 'seek' delay. This means a typical USB 3.0 memory stock can 'beat' a SATA III hard drive when it comes to transferring multiple small files - especially when those files are likely scattered all over the hard drive surface.

ReadyDrive is used to hold copies of multiple small system files needed at boot time. Whilst the hard drive loads big files, the small ones are fetched from the USB memory stick. This improves Boot time because he hard drive is not slowed down wasting time 'seeking' to the small files
So ReadyDrive actually speeds up boot time
ReadyBoost extends ReadyDrive to application files. It thus works with SuperFetch, which was introduced with Vista to 'pre-load' commonly used applications. As with ReadyDrive, ReadyBoost holds copies of the smaller files that can be loaded at the same time as the hard drive is used for the larger ones.
The problem with ReadyBoost is that Superfetch is a 'pre-fetcher' = so it tries to pre-load applications that you are not (yet) using. On the other hand, if it's using USB memory sticks, it's not hogging the hard drive. So, 'on balance', it's worth using.
Vista supports 1 USB ReadyBoost, Win 7 up to 8.

The Windows XP system has no such concept (Superfetch is what makes Vista (appear) faster than XP :-) ), however you CAN place a 'swap file' on the USB memory stick

Of course your XP system motherboard likely has no USB 3 sockets - and even if it does, chances are there are no XP drivers for them.
Further, whilst you might be able to buy an XP compatible USB 3.0 plug-in card, older motherboards come with PCI slots (not PCI-e). The PCI Bus limit is 1.3Gbps, whilst USB 3.0 supports 5Gbps.
However you can expect a USB 3.0 memory stick plugged into a USB 3.0 PCI card will at least achieve 1.3Gbps, which is double the speed of a USB 2.0 device (plugged into the same card).
Note that PCIe slots are not necessarily much faster. You will need to check your motherboard specifications. In theory, a PCIe 'x1' slot version 1.0/v1.1 supports 2.5 Gbps. PCIe 2.0 is 5 Gbps, PCIe 3.0 is 8 Gbps.
In every case, actual speeds will be slower. Note that even a PCIe v3.0 card can only support a single full speed (5 Gbps) USB 3.0 device.
Note also that USB 3.0 can deliver higher power to attached devices, which is not available from your motherboards PCI/-e slots. So almost all cards come with sockets for a power plug (4pin and/or SATA). Many cards - even (especially) the more expensive ones - will not work at all unless you plug in a power cable from your PC's power supply.

See also my ReadyBoost (Win7) page

For a comparison of drive V's memory stock speeds, expand the note below :-

(+) Comparison of drive speeds

The pages in this topic are :-

  + Using a SSD

  + Upgrading your PC

  + Ready boost and Win7

  + Going virtual - (with HyperV)

  + Diagnosing Internet speed problems == Latest changes (modified 29th May 2018 14:36.)

Next page :- Using a SSD