TN - 1309 Identifying and managing a deployed Platform (engine)
Description
This article from InSource discusses the identification and management of deployed Platforms (engines).
- Author: Mario Meza
- Published: 12/15/22
- Applies to: Application Server 2014 R2 SP1 and above
Details
When you think of a platform you likely picture the object representing a computer / node in your system where objects are deployed, (as seen in the deployment view of the IDE).
Once deployed however a ‘Platform’ is the logical name for an Engine Module / runtime process called aaEngine.exe (pictured below in task manager).
A deployed platform can be identified by the command line arguments IsPlatformEngine=-1, and EngineName= which should match the name of the Platform Instance in the IDE.
These values can be viewed by enabling the Command line column in task manager (From the Processes tab of Task Manager right click a column name and select Command line).
You can also get this information by executing the following Power Shell script:
Get-WmiObject Win32_Process -Filter "name = aaengine'" | Select-Object CommandLine, ProcessId| format-list
While monitoring or troubleshooting a platform you may notice a discrepancy between what object viewer displays for the Platform.CPULoad and the value seen in the task manager of the platform.
The following technote from AVEVA provides an explanation of how the values are calculated for the built-in attributes: How Engine.ProcessCPULoad in Multicore Environment is Calculated and provides the reason for any discrepancy.
For the most part, the OS manages its resources very well, but there are certain instances where Platform (engine) performance is bad, perhaps due to inadequate resources or an app is particularly intensive. In these scenarios one approach that can be useful in balancing the load can be to dedicate one core to a particular engine, for instance if the engine is very busy or if heavy attribute implementation is referenced. Once you identify an ‘engine’ that is busy, task manager has a feature that lets you set CPU affinity and assign any process(s) to run under a specific core.
With the engine module in question identified, from task manager right click on the process and select Go to details
The aaEngine.exe will be highlighted under the Details tab, Right click the .exe and select Set affinity
From Processor affinity pop up you can Select the cores/logical cores you’d like to assign to process.