Reading 32-bit counters on a 64-bit machine

If you are running ASP.NET or IIS in 32 bit mode on a 64 bit machine, remote performance counter collection does not work by default. When you try to collect these counters from a remote machine, the OS will by default try to collect 64 bit counters, not the 32 bit versions.

When remotely reading performance counters the Performance Logs and Alerts service on the remote system communicates with the Remote Registry service on the target x64 system. By default the Remote Registry service that is loaded is the 64-bit version and it looks to the 64-bit registry structure, causing the x64 system to send back the 64-bit counter information to the remote system, even if the remote system is a 32-bit OS. Thus we are unable to remote monitor any 32-bit counters on the x64 system. 

Reg path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry
Param: ImagePath
Old Value: %SystemRoot%\System32\svchost.exe -k regsvc
New Value: %SystemRoot%\SysWow64\svchost.exe -k regsvc

Reg path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry\Parameters
Param: ServiceDll
Old Value: %SystemRoot%\System32\regsvc.dll
New Value: %SystemRoot%\SysWow64\regsvc.dll

Copy these commands into a .reg file and run it:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry]
"ImagePath"="%SystemRoot%\SysWow64\svchost.exe -k regsvc”
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteRegistry\Parameters]
"ServiceDll"="%SystemRoot%\SysWow64\regsvc.dll"

This will load the 32-bit version of the Remote Registry service, which looks to the 32-bit registry structure, causing the x64 system to send back the 32-bit counter information to the remote system.

Further testing showed that remote admiistration tools, like Regedit, Computer Management, System Information, etc., all still work even with the 32-bit version of Remote Regitry loaded on the x64 system.

In addition to the registry changes please make sure to follow-up with a reboot of the machine where you changed the registry and also your load test controller (although it might be good enough just restarting the controller service).

Finally, the ASP.NET counter category will have the version appended to it. So you need to open <installdir>\common7\IDE\Templates\LoadTest\CounterSets\ASP.NET.counterset, and change

<CounterCategory Name="ASP.NET">

To

<CounterCategory Name="ASP.NET v2.0.50727">

 Ed.

Posted Wednesday, September 06, 2006 2:06 AM by LoadTestBlog | 1 Comments [Edit]

[Edit Tags]