Last week my organization upgraded from PC 12.50 to PC 12.53 Patch 1. Eversince I noticed the following behaviour on the LGs when running TruClient tests:
During a run of one or more TruClient scripts I noticed that the number of GDI objects shown in the windows task manager is always 0 (see screenshot) for each FF instance that is running. Note that you have to enable the GDI object column in the Taskmanager to be able to see this. This is quite different from how it was in 12.50, then the GDI object numbers would be shown (not being zero ofcourse). I wonder how this can be? It cannot be zero right? Zero would mean the instances of FF are started, but do not claim any graphical resources. Yet the test runs and transactions are being executed succesfully.
I am puzzeled here, please explain how this can be. As it is now I cannot determine anymore when a server is running low on GDI objects so when to switch to running Vusers in combination with RDS.
Note that the Performance Center agent is running as a service on the LG.
Sorry, I didn't check it myself. Checked it now and you are right.
As a workaround you can try running Process Explorer but I have to warn you I was not able to interact with its' user interface while run in Session 0 and the GDI objects column is not visible there by defrault. Maube it will be interactive in your case.
The reason GDI object show 0 might be Firefox is hanged during that time. Did you get any error during run the test -'GDI 0'?
Could you please make a test with below option and check is Firefox hanged?
- In the script folder, edit file-default.cfg/PaintWindowsInLoad=1 then save it.
- Login to LG machine using the default PC User (normally it is IUSR_METRO), change to run as process then run the script with only 1 Vuser. Please check if the script flow is fine, Firefox hang or not and check the GDI object value.
Chau Nguyen | SW Technical Support Consultant.
LoadRunner and Performance Center
If you find that this or any other post resolves your issue, please be sure to mark it as an accepted solution.
If you are satisfied with anyone’s response please remember to give them a KUDOS by clicking on the STAR at the bottom left of the post and show your appreciation.
In order to view the browser in load mode also when the LoadRunner agent is configured to run as service please follow the steps mentioned in TruClient troubleshooting seminar - https://www.youtube.com/watch?v=2HS9iO5Orkk&t=2s
Once you view the browser you can better estimate if the browser hanged or not.
Regarding GDI, I have seen many times where Windows Task Manager does not show the correct value. I suggest checking this Stackoverflow convresation. It has good recommendations for how you can measure that
Now I did some more investigation:
- I monitored the GDI object counters with the sysinternals process explorer: they all show 0 for each FF instance.
- Did some more investigation and found intersting behavior:
- When the performance center agent is running in process mode, the taskmanager does indeed show values other then 0 for each FF instance.
- When the performance center agent is running as a service, the taskmanager shows always 0 for each FF instance. This is even when I forced the paint in load mode on the LG. Look at the screen below, it is a snapshot taken form an LG where I started the interactive service detection service (after modifying the registry). You can clearly see the interactive service detection window. If the "View the message" button is clicked, then I am really able to see the GUI painted on screen. But you can also see the taskmanager and the FF instance showing 0 GDI objects. This is strange! Graphical objects are being used, but not shown in the task manager.
Note that I conducted this test with only one Vuser, otherwise it would get messy on the LG with all the interactive services detection notification windows.
So the good news is: by running the performance center agent in process mode I am able to "measure" the GDI objects per FF instance. But how come that is not shown when the performance center agent is running as a service?
Note that I see this now in PC 12.53, but the behavior might have been there in 12.50 also as I cannot recall in what modus the performance center agent was running then.
Sorry for the late reply. I was on a few days of vacation.
Why do you need to measure the GDI objects?
When you ran the scenario when the agent is configured as process, did it work corrcetly? I mean, did the Vusers run correctly regardless to the GDI objects indication?
And what happened when you ran it as service? (BTW, you will get only one "View the message" popup even if you run multiple Vusers. It will just be harder to manage the multiple windows when switching to Session 0 desktop)
If you just want to measure GDI I can provide a script that is doing it.
Thanks for your reply and time. The reason I want to measure the number of GDI objects in use is because in the past I have done Citrix test with a large number of users and the LGs were running out of GDI objects. As a result, the CPU of the LGs could not be loaded any higher then 11%, no matter if the number if Vusers were raised any higher or not (more Vusers only resulted in more test errors). This was clearly due to GDI limitation. Later I switched to using Vusers running on TS sessions so more GDI resources were created on the LG. Recently a colleague also run into GDI limitations with a TruClient test. I wanted to show him how he could observe the number of handles in use by each Vuser through the taskmanager and only then discovered that all was shown as 0. I knew this could not be right, hence I dropped the question in this forum. Only a little later I realized that I was able to verify the number of GDI objects (via task manager) during my Citrix tests, which of course run when the performance center agent is running in process mode. So this gave me a clue as where to look for.
Now onto you question... the way the performance center agent is running, either as a service or as a process does not seem to affect the Vusers running. In both cases the PC run screen will show that transactions are successfully executed, even if the number of GDI objects shown for each Vuser is zero (in case perf center agnet is running as a service).
If you have a script that can measure the number of GDI object, I would very much appreciate that, as I expect that our oerformance test team will run into this situation more often in the future (switching over more and more to TruClient).
Thanks for the detailed reply. Totally make sense, seems like you know what you are doing :-).
I was worried you already experience issues, hence my questions.
I have attached a script that helps monitoring GDI resources.
1. Rename the file extension to zip
2. You should run one Vuser on each Load Generator.
3. Read the script and understand what it is doing. You need to change the process name to the brower process name and make further adjustments in case needed
4. In case you use Terminal Services integration (see this post) you will need to make further adjustments in the script to capture GDI resources from each Windows Session.
Good Luck. We are here to help.
Thanks for the script. I followed step 3 and renamed mdrv.exe to firefox.exe (as I am using the FF browser). When I run the script combined with a Truclient FF script and LG performance center agent in process mode, it does indeed show the GDI objects and User objects in use. However when I run the script with performance center agent of LG running as a service it only shows 0 all the time. I checked the task manager of the LG manually and sure enough the GDI object in use for all FF processes all show 0. So it brings me back to where I started from... when LG is running in service mode the number of GDI objects cannot be viewed or measured.
I also noticed that when I active TS integration, with performance center agent running as a process, all FF processes on the LG will show 0 number of GDI objects and 0 number of User objects. So I bet, even with your recommended modification of the script (step 4) it will not show me anything else besides 0.
I also tested TS integration when the performance center agent was running as a service, same thing: task manager shows 0 for GDI and User objects.
Do you get transactions reported when running the agent as a service? It sounds like the browser is not doing anything.
I guess it is something that requires a closer look, I believe you already opened a support ticket., right?
Sorry I couldn't help here
In all cases I described in my previous post I wittnessed transactions being executed succesfully. That is why I think it is so strange, if you look at the GDI objects value in the taskmanager it looks like the firefox process is not claiming any graphical resources, yet the script is executed succesfully. So I cannot say this is a bug of PC, because all is working well. But it will give you a pain if you want to observe the number of GDI objects in use when running in service mode or using TS integration, because you cannot find out, not even with the script you provided.
Your script does help though. At least it gives me the opportunity to measure what the usage would be on an LG provided that I do not use TS integration or have the performance center agent running as a service. It will give me the ballpark figure and right now that is what I am looking for. Once I know what the usage will be, I can decide if I need TS integration for a cetrain Citrix or TruClient test.
You want me to put this in as an SR? Like I said: PC does not seems to be malfunctioning, maybe this is some kind of interworking between the OS and PC?
If everything is running fine I do not think SR will be appropriate since we will not be able to do anyting with it. I do not think it is something specific to PC.
1. I Googled it and could not find anything helpful
2. I will ask around to see if someone here has an idea
3. Can you please download PsTools and run firefox.exe in session 0 using PsExec. Try to interact with it to navigate somewhere and see if GDI objects appear there.
Did this: started firefox (the version that came installed with PC) in session 0 on the LG, then visited a website in that session 0 browser. Look at the results below: GDI and user objects show 0, must be a Microsoft thing then...
Thank for your help and thinking along with me here. It's always nice to understand things.