Recently, we have seen an issue where a user is facing high CPU usage when our APPSeCONNECT agent is opened. We have investigated further and found the CPU utilization increases when a complex page of the agent is opened. Such a case is purely an issue with the Graphics driver in the environment. In this article, we will see what are the processes which can help in reducing or removing this kind of issue on your system.
Symptoms
You are getting high CPU usage whenever you open the agent tool. If you open your task manager, you see the CPU utilization of “InSync.appseconnect.AppStarter.exe” is constantly at a CPU percentage higher than 20%. Remember, the article will help you only if the CPU utilization is constantly at a higher rate rather than sudden spikes.
Cause
There could be a number of reasons for this to happen.
- The Graphics driver is not updated, and certain security patches installed in the server from Windows require you to upgrade your graphics driver.
- You are using hardware acceleration, but your graphics card is not perfectly offloading the user interface rendering to GPU and it uses CPU completely.
Why Does This Happen?
In order to obtain GPU-accelerated rendering, our Agent renders and presents graphics through the DirectX pipeline. The GPU, or Graphics Processing Unit, is the chip that powers your video card. Essentially, hardware acceleration offloads the work of rendering graphics in the application from your computer’s main processor (CPU) to the video card’s processor (GPU). By using hardware on your video card that is specifically designed for rendering graphics instead of software functions run by the CPU, the performance of your application’s graphics and the user interface is increased, or accelerated. The ultimate goal is that complex graphics routines become render-bound (that is, limited by the capabilities of the GPU), rather than processor-bound (that is, limited by the capabilities and speed of your computer’s CPU). This frees up the CPU to do other work, makes the best use of your video card’s unique graphics capabilities, and speeds up the performance of your app each time the user upgrades to a newer, faster, and more advanced video card (as they become available).
This, of course, assumes that your video card supports hardware acceleration. In fact, not all of them do, and the application accommodates this with a three-tiered approach:
- If your video card does not provide any level of hardware acceleration, such as if you’re running a version of DirectX less than 7.0, the application falls back to Tier 0 rendering mode, or software acceleration.
- If your video card supports partial hardware acceleration, such as if you’re running a version of DirectX between 7.0 and 9.0, then the application uses Tier 1 rendering mode.
- If your video card supports full hardware acceleration for all graphics output, corresponding to a version of DirectX equal or greater than 9.0, then the application uses Tier 2 rendering mode.
The application is intelligent enough to fall back to different tiers depending on either the DirectX version or graphics card drivers. But sometimes the process does not work perfectly, which causes the system to fail the offloading work from GPU to CPU and then it processes in CPU entirely.
What are the Solutions?
There are a number of solutions to the problem, and I am trying to get into the scenarios one by one.
Update / Reinstall Graphics Drivers
Graphics drivers are one of the primary reasons for such an issue. If you see when you open a complex user interface the CPU utilization increases, which means clearly the graphics driver is not working well. To update the graphics driver, ask your system admin to see what graphics card is installed in the system and upgrade. If your system admin tells you that there is no GPU installed, it would be nice to disable Hardware acceleration, such that the rendering engine does not go to the fallback mechanism and does everything in CPU in the first place. In such scenarios, there will be a rise in CPU usage when you keep Agent open.
Identify whether drivers are updated
- Navigate to Start > Control Panel.
- Click Device Manager.
- Find the Display Adapter section and expand it.
- Right-click Intel® Display Adapter and select Properties.
- Go to the Driver tab and you should see your driver version.
If you see the driver versions correctly, that means the driver is installed.
Identify whether DirectX is having issues
- Start > Run (or Windows+ R)
- Type DxDiag in the Run Window.
- Press Enter.
- Navigate to the tab listed as Display 1.
- The driver version is listed under the Driver section as Version.
If the driver version is listed, then the DirectX is working correctly.
Disable Hardware acceleration and check if the issue persists
Sometimes this offloading of CPU to GPU fails because of graphics driver is not responding at a certain point in time in such cases, we recommend disabling hardware acceleration such that the entire thing works in software rendering.
To disable graphics hardware acceleration:
- Choose Start > Control Panel.
- Double-click Display.
- Click the Settings tab.
- Click Advanced.
- Click the Troubleshoot tab.
- Move the Hardware Acceleration slider to None.
- Click Apply and then click OK to accept the new setting and close the dialog box
- Click OK to close the Display Properties dialog box.
- Restart Windows.
You can also choose the registry to do the same thing.
- Press the Windows logo key + R to open a Run dialog.
- Type Regedit into the Run dialog and press Enter to open the Registry Editor.
- In the left pane of the Registry Editor, navigate to the following directory:
HKEY_CURRENT_USER > Software > Microsoft
- In the right pane of the Registry Editor, click on the Graphic sub-key under the Microsoft key to having its contents displayed in the right pane.
- In the right pane of the Registry Editor, check to see if a DWORD value titled DisableHWAcceleration exists. If the DWORD value exists, it will probably have a value of 0. Simply double-click on it to modify it, replace whatever is in its Value data: field with 1, and click on OK.
If the DisableHWAcceleration value does not exist, right-click on an empty space in the right pane of the Registry Editor, hover over New and click on DWORD (32-bit) value, name the new DWORD value DisableHWAcceleration, double-click on the newly created value to modify it, replace whatever is in its Value data: field with 1 and click on OK. - Close the Registry Editor.
- Restart your computer to have the changes you made take effect.
If you see any discrepancies or you see the problem is fixed after disabling hardware acceleration, you should be certain that the issue happened only because of the graphics card issue.
Conclusion
Thus to encounter such problems, first, you need investigation, then you can be certain what was causing the issue. Do let us know your issues in the comments such that we can discover more use cases of high CPU usages.
Hope this helps.
APPSeCONNECT is a smart and robust business application integration platform that seamlessly connects all your business applications with each other to streamline operations and facilitate the free flow of data across the platforms. By moving into the region of iPaaS, APPSeCONNECT proves to be a best-in-the-class platform that easily connects systems and automates the business process.
Now, you can easily connect all your business applications under one single platform to automate the business process!