Technology as a way of life

Life is the art of drawing without an eraser...

Disabling QoS to Free Up 20% of Bandwidth

This tip made the rounds with people believing that Microsoft always allocates 20% of your bandwidth for Windows Update. According to the instructions, you were supposed to disable QoS in order to free up bandwidth. Unfortunately this tip was not only wrong, but disabling QoS will cause problems with applications that rely on it, like some streaming media or VoIP applications.

Rather than taking my word for it, you can read the official Microsoft response: "There have been claims in various published technical articles and newsgroup postings that Windows XP always reserves 20 percent of the available bandwidth for QoS. These claims are incorrect... One hundred percent of the network bandwidth is available to be shared by all programs unless a program specifically requests priority bandwidth."

Make Vista Use Multiple Cores to Speed Up Boot Time

boot_option.jpgThis bogus tip made the rounds recently and almost everybody got caught including Lifehacker and big brother site Gizmodo... although commenters called it out quickly on both sides, and the editors updated the posts. (That's yet another reason to always participate in the comments here.)

According to this tip, you were supposed to use MS Config to modify the "Number of processors" drop-down on the Boot tab. The problem is that this setting is only used for troubleshooting and debugging, to be able to determine if there is a problem with a single processor, or for a programmer to test their code against a single core while running on a multi-core system. Windows will use all your processors by default without this setting.

Clearing Out Windows Prefetch for Faster Startup

The Prefetch feature in Windows XP caches parts of applications that you frequently use and tries to optimize the loading process to speed up application start time, so when a number of sites started suggesting that you clean it out regularly to speed up boot time it seemed like good advice... but sadly that's not the case, as pointed out by many Lifehacker commenters.

The Prefetch feature is actually used as a sort of index, to tell Windows which parts of an application should be loaded into memory in which order to speed up application load time, but Windows doesn't use the information unless it's actually starting an application. There's also a limit of 128 files that can be stored in the prefetch folder at any point, and Windows cleans out the folder automatically, removing information for applications that haven't been run as frequently. Not only that, but a well-written defrag utility will use the prefetch information to optimize the position of the files on the disk, speeding up access even further.

Cleaning the Registry Improves Performance

The Windows registry is a massive database of almost every setting imaginable for every application on your system. It only makes sense that cleaning it out would improve performance, right? Sadly it's just a marketing gimmick designed to sell registry cleaner products, as the reality is quite different... registry cleaners only remove a very small number of unused keys, which won't help performance when you consider the hundreds of thousands of keys in the registry.

Clear Memory by Processing Idle Tasks

By this point you should be starting to get the picture... if something sounds too good to be true, it likely is. This well-traveled tip usually claims that you can create an "undocumented" shortcut to Rundll32.exe advapi32.dll,ProcessIdleTasks that will clear out memory by processing all of the idle tasks wasting memory in the background.

What's the problem? Those idle tasks aren't actually waiting in the background... what you are effectively doing is telling the computer that you've walked away so it can now do other processing while you are idle. Except you aren't. The real purpose of this functionality is to finish all processing before running benchmarks to ensure consistent times, and according to the Microsoft documentation there's a whole different story

Clean, Defrag and Boost Your RAM With SnakeOil Memory Optimizer

Just take a quick look at any download site, and you'll find hundreds of products that claim to "optimize RAM to make your computer run faster". Give me a break! Almost all of these products do the same things: they call a Windows API function that forces applications to write out their memory to the pagefile, or they allocate and then deallocate a ton of memory quickly so that Windows will be forced to page everything else.

Both of the techniques make it appear that you've suddenly freed up memory, when in reality all you've done is trade in your blazing fast RAM for a much slower hard drive. Once you have to switch back to an application that has been moved to the pagefile, it'll be so slow you'll be likely to go all Office Space on your machine.

Disabling Shadow Copy/System Restore Improves Performance

I've barely come across a Windows Vista tips site that doesn't tell you to disable System Restore to speed up performance, because it takes up to 15% of your hard drive by default, which sounds like good advice. Except it's not.

The reality is that System Restore only actually kicks in when you are installing updates or applications, or at pre-scheduled times in the day, and the automatic checkpoints will only happen when your computer is not being used. These checkpoints allow you to easily roll back your system to a pre-crash state, and I can tell you from experience that System Restore is a critical feature when your Vista machine has problems, allowing you to easily get back to a working state.

Enable SuperFetch in Windows XP

Somebody decided to start spreading the myth that you could enable SuperFetch in Windows XP by adding the same EnableSuperfetch key into the registry that Windows Vista has, and it spread like wildfire. Naturally, this tip was completely bogus.

The good news is that this tip is one of the few that will not harm your system in any way, as long as you don't break something while editing the registry. If you insist on using it, I won't complain.

Disabling Services to Speed Up the Computer

Perhaps the most common myth is the advice to disable all services that you aren't using. I realize this will generate some controversy, so let me clarify: Disabling non-essential services that are NOT part of Windows will sometimes yield a performance gain if you have identified those services as causing a problem. You can identify or disable those services by opening msconfig.exe and checking the box for "Hide all Microsoft services" on the Services tab:

The problem with disabling services is that your devices will often not work once you do: for instance, I disabled the "Unknown" dlbt_device service in the list above, and could no longer print to my Dell printer... disabling the VMware services made VMware unable to run, and so forth.

You should be even more careful to not disable built-in Microsoft services in Windows, except for a select few under certain circumstances:

  • SuperFetch—This caching service preloads applications into memory, and actually does work. The problem is that it can cause your hard drive to do a lot of grinding while it's working, which is especially irritating on a laptop.
  • Windows Search—If you don't use the Vista search or you use an alternate desktop search engine, you really don't need this service and can increase performance quite a bit by disabling it.
  • Windows Defender - If you are already using another anti-malware product, you really don't need this running as well.

Enabling AlwaysUnloadDLL frees up more memory and improves performance

Reality - "Adding this Registry Key in Windows 2000 or XP has no effect since this registry key is no longer supported in Microsoft Windows 2000 or later. The Shell automatically unloads a DLL when its usage count is zero, but only after the DLL has not been used for a period of time. This inactive period might be unacceptably long at times, especially when a Shell extension DLL is being debugged. For operating systems prior to Windows 2000, you can shorten the inactive period by adding this registry key."

"Adding ConservativeSwapfileUsage=1 to the System.ini file improves performance."

Reality - "The System.ini and Win.ini files are provided in Windows XP for backward compatibility with 16-bit applications (MS-DOS-based programs). They have no effect on the Windows XP paging file settings which are stored in the Registry. This setting only effects Windows 95/98 operating systems. The default setting for ConservativeSwapfileUsage is 1 for Windows 95, and 0 (zero) for Windows 98. On Windows 98 systems you can set ConservativeSwapfileUsage=1 under the [386Enh] heading of the System.ini file causing the system to behave as Windows 95 does, at some cost in overall system performance."

"Setting DisablePagingExecutive to 1 improves performance by preventing the kernel from paging to disk."

Reality - "DisablePagingExecutive applies only to ntoskrnl.exe. It does not apply to win32k.sys (much larger than ntoskrnl.exe!), the pageable portions of other drivers, the paged pool and of course the file system cache. All of which live in kernel address space and are paged to disk. On low memory systems this can force application code to be needlessly paged and reduce performance. If you have more than enough RAM for your workload, yes, this won't hurt, but then again, if you have more than enough RAM for your workload, the system isn't paging very much of that stuff anyway. This setting is useful when debugging drivers and generally recommended for use only on servers running a limited well-known set of applications."

"The built-in Disk Defragmenter is good enough."

Reality - "This statement would be true if the built-in defragmenter was fast, automatic, and customizable. Unfortunately, the built-in defragmenter does not have any of these features. The built-in defragmenter takes many minutes to hours to run. It requires that you keep track of fragmentation levels, you determine when performance has gotten so bad you have to do something about it, and then you manually defragment each drive using the built-in defragmentation tool."

"Adding IRQ14=4096 to the System.ini file improves performance."

Reality - "This is a made up nonexistent command that does absolutely nothing. The System.ini and Win.ini files are provided in Windows XP for backward compatibility with 16-bit applications (MS-DOS-based programs). They have no effect on any Windows XP settings or 32-bit applications which are stored in the Registry."

"Adjusting the Priority of IRQs especially IRQ 8 improves system performance."

Reality - "IRQs don't even HAVE a concept of "priority" in the NT family; they do have something called "IRQL" (interrupt request level) associated with them. But the interval timer interrupt is already assigned a higher IRQL than any I/O devices, second only to the inter-processor interrupt used in an MP machine. The NT family of OSes don't even use the real-time clock (IRQ 8) for time keeping in the first place! They use programmable interval timer (8254, on IRQ 0) for driving system time keeping, CPU time accounting, and so on. IRQ 8 is used for profiling, but profiling is almost never turned on except in very rare development environments. Even if it was possible it doesn't even make sense why adjusting the real-time clock priority would boost performance? The real-time clock is associated with time keeping not CPU frequency. I would not be surprised if this originated in an overclocking forum somewhere. This "tweak" can be found in most XP all-in-one tweaking applications. This is a perfect example of why they are not recommended."

"Enabling LargeSystemCache improves desktop/workstation performance."

Reality - "LargeSystemCache determines whether the system maintains a standard size or a large size file system cache, and influences how often the system writes changed pages to disk. Increasing the size of the file system cache generally improves file server performance, but it reduces the physical memory space available to applications and services. Similarly, writing system data less frequently minimizes use of the disk subsystem, but the changed pages occupy memory that might otherwise be used by applications. On workstations this increases paging and causes longer delays whenever you start a new app. Simply put enable this on a file server and disable it on everything else."

Notes - "System cache mode is designed for use with Windows server products that act as servers. System cache mode is also designed for limited use with Windows XP, when you use Windows XP as a file server. This mode is not designed for everyday desktop use. When you enable System cache mode on a computer that uses Unified Memory Architecture (UMA)-based video hardware or an Accelerated Graphics Port (AGP), you may experience a severe and random decrease in performance. For example, this decrease in performance can include very slow system performance, stop errors, an inability to start the computer, devices or applications that do not load, and system instability. The drivers for these components consume a large part of the remaining application memory when they are initialized during startup. Also, in this scenario, the system may have insufficient RAM when the following conditions occur:

- Other drivers and desktop user services request additional resources.
- Desktop users transfer large files.

By default LargeSystemCache is disabled in Microsoft Windows XP.

"Disabling the Paging File improves performance."

Reality - "You gain no performance improvement by turning off the Paging File. When certain applications start, they allocate a huge amount of memory (hundreds of megabytes typically set aside in virtual memory) even though they might not use it. If no paging file (pagefile.sys) is present, a memory-hogging application can quickly use a large chunk of RAM. Even worse, just a few such programs can bring a machine loaded with memory to a halt. Some applications (e.g., Adobe Photoshop) will display warnings on startup if no paging file is present."

Notes - "In modern operating systems, including Windows, application programs and many system processes always reference memory using virtual memory addresses which are automatically translated to real (RAM) addresses by the hardware. Only core parts of the operating system kernel bypass this address translation and use real memory addresses directly. All processes (e.g. application executables) running under 32 bit Windows gets virtual memory addresses (a Virtual Address Space) going from 0 to 4,294,967,295 (2*32-1 = 4 GB), no matter how much RAM is actually installed on the computer. In the default Windows OS configuration, 2 GB of this virtual address space are designated for each process' private use and the other 2 GB are shared between all processes and the operating system. RAM is a limited resource, whereas virtual memory is, for most practical purposes, unlimited. There can be a large number of processes each with its own 2 GB of private virtual address space. When the memory in use by all the existing processes exceeds the amount of RAM available, the operating system will move pages (4 KB pieces) of one or more virtual address spaces to the computer's hard disk, thus freeing that RAM frame for other uses. In Windows systems, these "paged out" pages are stored in one or more files called pagefile.sys in the root of a partition. Virtual Memory is always in use, even when the memory required by all running processes does not exceed the amount of RAM installed on the system."

Hope that cleared up some of the usual myths. Also the XP fanboys who think having 90% of the ram free is good... i have news for you... it sucks. All aplications will reload themselves everytime you execute them. By letting Windows use all the available RAM it will automatically store the most used applications so they can start almost instantly. Why have 2/4/8 gb of ram if it's gonna be empty all the time? That's why it's called memory... to actually have something on it to be usefull. Don't worry windows will free the memory if you start something else which it didn't precache already.


Andrew said...

This whole post is filled with various myths that will REDUCE performance.

Such as ... Cleaning the prefetch folder is a myth, the folder is self cleaning by Windows. Cleaning it will REDUCE performance.

RaduB. said...

thats why they are myths ... :) people think they actually work but they don't :)

Post a Comment