Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which local machine components could affect a RDP-session performance-wise?

I've got the following totally reproducible scenario, which I'm unable to understand:

There is a very simple application, which does nothing else than calling CreateObject("Word.Application"), that is creating an instance of MS Word for COM interop. This application is located on a Windows Terminal Server. The test case is to connect via RDP, execute the application and the application will output the time taken for the CreateObject call.

The problem now is that the execution time is significantly longer, if I connect from a specific notebook (HP Spectre): It takes 1,7s (+/- 0.1s).

If I connect from any other machine (notebook or desktop computer), then the execution time is between 0,2-0,4s.

The execution times don't depend on the used RDP account, or screen resolution, or local printers. I even did a fresh install of Windows on that HP notebook to rule out any other side-effects. It doesn't matter if the HP notebook is connected via WLAN or an USB network card. I'm at a loss understanding the 4x to 8x execution time difference to any other machine.

Which reason (component/setting) could explain this big difference in execution time?

Some additional information: I tried debugging the process using an API monitor and could see that >90% of the execution time is actually being spent between a call to RpcSend and RpcReceive. Unfortunately I can't make sense of this information.

like image 470
MicSim Avatar asked Feb 06 '18 12:02

MicSim


2 Answers

It could be the credential management somehow being in the way.

Open the .rdp file with notepad and add

enablecredsspsupport:i:0

This setting determines whether RDP will use the Credential Security Support Provider (CredSSP) for authentication if it is available

Related documentation

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff393716%28v%3dws.10%29

like image 63
Tschallacka Avatar answered Oct 20 '22 22:10

Tschallacka


According to your information about RpcSend and RpcReceive time consumption, it could be the case you have some service stopped on your client machine, like DCOM server or some other COM-related (they usually have "COM" or "transaction" in their names).

Some of that services could be started/stopped (if Manually mode selected) by system to/after transfer your request, but there is a time delay to starting service.

I suggest you to open Computer Management - Services or run -> services.msc and compare COM-related services running on your "slow" client and on your "fast" clients, and try to set Automatically running instead Manually or Disabled.

Also, try to run API Monitor on such processes to determine the time-consuming place more precisely.

like image 24
Arthur Bulakaiev Avatar answered Oct 20 '22 22:10

Arthur Bulakaiev