Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/252867

From BetaArchive Wiki

Article ID: 252867

Article Last Modified on 3/1/2007


  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server

This article was previously published under Q252867

IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry


Binding of device interrupts to particular processors on multiprocessor computers is a useful technique to maximize performance, scaling, and partitioning of large computers. Interrupt-Affinity Filter (IntFiltr) is an interrupt-binding tool that permits you to establish affinity for device processors on multiprocessor computers. IntFiltr uses Plug and Play features of Windows 2000 and provides a Graphical User Interface (GUI) to permit interrupt binding. This article describes how to install and use IntFiltr to permit a user to change the Central Processing Unit (CPU) on a single computer.


WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

IntFiltr improves performance and scaling of large computers that contain multiple processors with partitioning and affinity for tasks to particular processors. When properly configured, the technique of partitioning permits caches on the processors to be used more effectively, thereby improving performance and scaling.

Windows 2000 contains many features that permit threads and processes to have affinity to particular processors. IntFiltr uses Plug and Play features of Windows 2000 that permits affinity for device interrupts to particular processors. You may configure IntFiltr to connect the filter driver to devices with interrupts and to set the affinity mask for the devices that have the filter driver associated with them.

IntFiltr permits an administrator to direct a device interrupt to a specific set of processors. On a Windows 2000-based multiprocessor computer, the interrupt controller directs the processor services a device interrupt to any available processor, which means an interrupt with the lowest interrupt request priority. By using IntFiltr, an administrator can choose to override the default behavior when they configure any set of processors as the target for the device interrupt. Typically, this would involve choosing a single processor to be the target.

Interrupt filtering can affect the overall performance of your computer. However, no single algorithm produces the best performance under all possible workloads. This is why Windows 2000, by default, directs interrupts to any available processor. An administrator, however, may be interested in partitioning interrupts for certain devices to particular processors or experimenting with various configurations to find out the optimal configuration. Note that this tool permits any configuration, even ones that are not optimal.

Because IntFiltr uses Plug and Play features of Windows 2000, IntFiltr cannot be used on Microsoft Windows NT, and it can only be used on devices that support Plug and Play. Also, IntFiltr should not be used on any device that shares interrupts with another device.

How to Install IntFiltr

  1. Download the IntFiltrTool.exe self-extracting file located at the following Microsoft Web site:
  2. Run IntFiltrTool.exe to extract, and then use WinZip.exe to extract the files from
  3. Copy IntFiltr.sys to your %SystemRoot%\System32\Drivers folder.
  4. Update your registry to include the changes listed in IntFiltr.reg by running the regedit intfiltr.reg command.

How to Configure and Use IntFiltr

  1. Run IntFiltr.exe located in the Config folder of this package.
  2. Under Devices, click the appropriate device, and then use Add Filter and Remove Filter to turn interrupt filtering on and off, respectively. When IntFiltr is installed on a device, the string "InterruptAffinityFilter" appears in the Upper Filters box.
  3. Select the Set Mask option to set the CPU affinity for the selected device interrupt, or select the Delete Mask option to remove a device CPU affinity mask from the registry.

NOTE: Installing IntFiltr on a device has no useful effect if no CPU affinity mask exists for a device.

NOTE: The Don't Restart Device When Making Changes is intended for advanced users, and can be used to change a device filter setting without restarting the selected device. When this is enabled, any change you make does not take effect until the next time the device is restarted.

Even though all the computer devices appear in the Devices list, it only makes sense to install IntFiltr on devices that have interrupt resources. To see which devices have interrupt resources, use Device Manager, and then view resources by type.

Once configured, IntFiltr runs in the background with no interaction until it is reconfigured. Interrupt affinity settings made with IntFiltr are persistent between reboots, meaning that once an interrupt affinity mask is defined for a device, it remains associated with the device until the administrator changes it. If a device is associated with a processor that is being removed from the computer, the system administrator must update the affinity mask for the device before the processor is removed from the computer. Also, IntFiltr generally should not be used on any device that is sharing interrupts with another device.

Processor enumeration on computers that use hyperthreading first assign processor numbers to the primary logical processor for each processor and then assign numbers to the secondary. For example, for dual physical processor computers with hyperthreading, the first processor has logical processor 0 and 2, and the second processor has logical processor 1 and 3. The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Keywords: kb3rdparty kbhowto KB252867