Slide 1
Slide 1
WW TSS-17WW TSS-18ArchestrA Graphics: DesignGuidelines for Top Performance
Presented by: Mirko CanelSenior Embedded TAM
@InvensysOpsMgmt / #SoftwareRevolution
/Wonderware HMI
social.invensys.com
© 2013 Invensys. All Rights Reserved. The names, logos, and taglines identifying the products and services of Invensys are proprietary marks of Invensys or its subsidiaries.All third party trademarks and service marks are the proprietary marks of their respective owners.
Presented by: Mirko CanelSenior Embedded TAM
/Wonderware
/Group –HMI/SCADA/AppServer
Agenda
We will discuss design considerations to achieve the best performancefrom Wonderware ArchestrA Graphics. Key topics covered:
1. Improve the performance of graphics to reduce the total time toshow updated values
2. CPU Utilization Considerations
3. Memory Utilization Considerations
4. Bottleneck Investigation
5. ArchestrA IDE Performance Considerations
Slide 3
We will discuss design considerations to achieve the best performancefrom Wonderware ArchestrA Graphics. Key topics covered:
1. Improve the performance of graphics to reduce the total time toshow updated values
2. CPU Utilization Considerations
3. Memory Utilization Considerations
4. Bottleneck Investigation
5. ArchestrA IDE Performance Considerations
Introduction
ArchestrA Graphics overview of the technology
1. .NET considerations on memory utilization: Garbage Collector (thetypical saw tooth in the memory utilization)
2. Vector graphics overview of the concepts
3. GDI+ (Graphic Device Interface) and CPU rendering pre and postWDDM 1.1 ( windows 7 )
4. Remote Desktop rendering technologies
5. Technical implementation Performance Vs Performance as efficiencyof the graphical representation
6. The operator at the center of the application design.
Slide 4
ArchestrA Graphics overview of the technology
1. .NET considerations on memory utilization: Garbage Collector (thetypical saw tooth in the memory utilization)
2. Vector graphics overview of the concepts
3. GDI+ (Graphic Device Interface) and CPU rendering pre and postWDDM 1.1 ( windows 7 )
4. Remote Desktop rendering technologies
5. Technical implementation Performance Vs Performance as efficiencyof the graphical representation
6. The operator at the center of the application design.
Introduction
TopPerformanceTechnical
Guidelines V.1.0of this
presentation2011
Introduction toArchestrA 2014Concepts: new
highperformance
graphic library
High Efficiency
Slide 5
TechnicalGuidelines V.2.0
and highperformance
concepts2013
Introduction toArchestrA 2014Concepts: new
highperformance
graphic libraryHigh Speed
High Speed + Efficiency
High SpeedHigh Efficiency
Introduction GDI, GDI+
GDI GDI+
Obj.Transparency
Obj. Antialiasing
Fn1(x)
Fn2(x)
Windows 7 - WDDM v1.1
Slide 6
Obj. Antialiasing
Obj. TranslucencyFn2(x)
Fn3(x)Obj.Gradients
Introduction Glossary
1. GDI/GDI+
2. WDDM 1.0, 1.1, 1.2
3. Graphic Element
4. Symbol, Embedded Symbol
5. Graphic
6. Sprite
Slide 7
1. GDI/GDI+
2. WDDM 1.0, 1.1, 1.2
3. Graphic Element
4. Symbol, Embedded Symbol
5. Graphic
6. Sprite
Behind ArchestrA graphics: GDI+
Windows 7 (WDDM v1.1) saves one copy of the memory allocation perapplication window by getting rid of the system memory copy entirely. Thus,for a GDI application window visible on the desktop, the memory consumedis cut in half.
Slide 8
Behind ArchestrA graphics: GDI, GDI+
Slide 9
ArchestrA Graphics Call-Up time baseconcepts
Retrieve Definition
Bind Data
Render
Continuous Updates
Close
Graphic Call-up Time
Static CPU Load
Memory Utilization
Slide 10
Retrieve Definition
Bind Data
Render
Continuous Updates
Close
Call-Up Time
Graphic Call-up Time
Static CPU Load
Memory Utilization
Retrieve Bind Render Continuous Close
Call Up Time: The contributorsSimplified overview on the main contributors to the time consumptionwhen showing an ArchestrA graphic
• Retrieve Definition: Size and complexity of the ArchestrA graphics
• Binding Data: Number of custom properties and references
• Rendering Time: Total number of simple and complex graphicelements, runtime graphical effects
• Waiting Data: Engine scan cycle, I/O speed, communication strategy
• Expression Evaluation: Total number, complexity, code efficiency
• Delta Rendering: Number of data changes + Total number of simpleand complex graphic elements, runtime graphical effects
Slide 11
Simplified overview on the main contributors to the time consumptionwhen showing an ArchestrA graphic
• Retrieve Definition: Size and complexity of the ArchestrA graphics
• Binding Data: Number of custom properties and references
• Rendering Time: Total number of simple and complex graphicelements, runtime graphical effects
• Waiting Data: Engine scan cycle, I/O speed, communication strategy
• Expression Evaluation: Total number, complexity, code efficiency
• Delta Rendering: Number of data changes + Total number of simpleand complex graphic elements, runtime graphical effects
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieve
Slide 12
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval
View.exe
Glass
Bolts
Polygon6
Polygon5
Polygon4
Polygon3
Arrow
.
.
.
.
.
.
ObjectsInitialization
ArchestrAGraphicLibrary
Slide 13
=
DeserializationDefinitionFiles
Disk I/O Arc1
.
.
.
.
.
.
ArchestrAGraphicLibrary
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: RetrievalGlass
Bolts
Polygon6
Polygon5
Polygon4
Polygon3
Arrow
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
Slide 14
=
Arc1
.
.
.
.
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval InTouchGlass
Bolts
Polygon6
Polygon5
Polygon4
Polygon3
Arrow
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
Slide 15
Arc1
.
.
.
.
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval InTouchGlass
Bolts
Polygon6
Polygon5
Polygon4
Polygon3
Arrow
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
Slide 16
=
Arc1
.
.
.
.
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval InTouchGlass
Bolts
ObjectsInitialization
Polygon6
Polygon5
Polygon4
Polygon3
Arrow
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
Slide 17
Arc1
.
.
.
.
• Graphic element information
• Animations Initialization
• Scripting Interface Initialization
• Communication Interface Initialization
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval InTouch
A simple ArchestrA Graphic Element is not just a representation on thescreen, it is part and able to interact dynamically with the entireArchestrA framework:
• Graphic Definition
• Animations
• Scripting
• Communication
Line=
Slide 18
A simple ArchestrA Graphic Element is not just a representation on thescreen, it is part and able to interact dynamically with the entireArchestrA framework:
• Graphic Definition
• Animations
• Scripting
• Communication
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval ArchestrA
The Simplest mitigation method for addressing slow retrieval ofArchestrA graphic shown using the new API ShowGraphic or theShowSymbol animation is to use the fastest disk IO available.
• SSD vs traditional Drives
Slide 19
The Simplest mitigation method for addressing slow retrieval ofArchestrA graphic shown using the new API ShowGraphic or theShowSymbol animation is to use the fastest disk IO available.
• SSD vs traditional Drives
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval InTouch
The Simplest mitigation method for addressing slow InTouch Windowscall up times is to “uncheck” load windows from disk (pre 2012)
• This does not change the initial draw times but all subsequent drawtimes are faster.
• This method has had limitations that have been more commonlyreached when using ArchestrA graphics
– Memory limitations are reached
– When limitations are reached in WindowViewer, new opened windows canresult in lower performance.
Slide 20
The Simplest mitigation method for addressing slow InTouch Windowscall up times is to “uncheck” load windows from disk (pre 2012)
• This does not change the initial draw times but all subsequent drawtimes are faster.
• This method has had limitations that have been more commonlyreached when using ArchestrA graphics
– Memory limitations are reached
– When limitations are reached in WindowViewer, new opened windows canresult in lower performance.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Retrieval 2012 R2
Slide 21
Call Up Time: In-Memory WindowCachingInTouch 2012 Enhancements
• The total amount of memory accessible to WindowViewer has beenextended to the maximums by default.
– 2 Gb on 32 bit OS; 3 Gb on 64 bit OS
• The memory cache will remove oldest windows from the cache tomake room for new windows being opened.
– First in/First out and time based aging
• Windows that are a high priority for fast access can be designatedwhich will result in them being always considered recent.
• ArchestrA Graphics memory footprint has been reduced by 15%
Slide 22
InTouch 2012 Enhancements
• The total amount of memory accessible to WindowViewer has beenextended to the maximums by default.
– 2 Gb on 32 bit OS; 3 Gb on 64 bit OS
• The memory cache will remove oldest windows from the cache tomake room for new windows being opened.
– First in/First out and time based aging
• Windows that are a high priority for fast access can be designatedwhich will result in them being always considered recent.
• ArchestrA Graphics memory footprint has been reduced by 15%
Retrieve: Element GroupingWhen using the Grouping mechanism in graphics there is an
optimization done for groups with no animation. The group ishandled as an image.
The Tank on the leftopens in half the timewith half the static CPUload of the tank on theright.Top PerformanceConfiguration:• 1 Base Group
Animations• 1 Base Group Static
elements.
Slide 23
The Tank on the leftopens in half the timewith half the static CPUload of the tank on theright.Top PerformanceConfiguration:• 1 Base Group
Animations• 1 Base Group Static
elements.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Element Grouping: 200 bytes eachIf an ArchestrA graphic was serialized on XML, a group would look like
this:
<GraphicElements>
<Group Left="50" Top="50" Width="492" Height="766"TreatAsIcon="False" Name="Group1" HasTransform="False"Enabled="True" Locked="False" TabStop="True" TabOrder="0"Visible="True" ElementID="224" Square="False" Transparency="0"Dock="None" AutoSize="False" AutoSizeMode="GrowOnly"Anchor="None" OriginX="0" OriginY="0" HasFillStyleData="True"HasLineStyleData="True" HasTextStyleData="True">
<FillStyleData VerticalPercentFill="100" HorizontalPercentFill="100">
<FillStyle>…
Slide 24
If an ArchestrA graphic was serialized on XML, a group would look likethis:
<GraphicElements>
<Group Left="50" Top="50" Width="492" Height="766"TreatAsIcon="False" Name="Group1" HasTransform="False"Enabled="True" Locked="False" TabStop="True" TabOrder="0"Visible="True" ElementID="224" Square="False" Transparency="0"Dock="None" AutoSize="False" AutoSizeMode="GrowOnly"Anchor="None" OriginX="0" OriginY="0" HasFillStyleData="True"HasLineStyleData="True" HasTextStyleData="True">
<FillStyleData VerticalPercentFill="100" HorizontalPercentFill="100">
<FillStyle>…
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Element Grouping performance impacton Retrieve
DEMO
Example_0001
Step 1 and 5
Impact on loading time
Slide 25
DEMO
Example_0001
Step 1 and 5
Impact on loading time
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Data Binding
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Slide 26
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Data BindingData binding is affected first of all by the total number of referencespresent in your ArchestrA graphics.
• Use a clever organization of the information: 1 integer customproperty instead of 16 Boolean custom properties when designing asymbol that will be used across all the graphics of your application(icons, alarm states)
• Try to avoid redundant information by reusing Custom Properties forthe embedded symbols. Clever use of Private/Public
• Use of Owning Object/SetCustomProperty/ShowGraphic
Slide 27
Data binding is affected first of all by the total number of referencespresent in your ArchestrA graphics.
• Use a clever organization of the information: 1 integer customproperty instead of 16 Boolean custom properties when designing asymbol that will be used across all the graphics of your application(icons, alarm states)
• Try to avoid redundant information by reusing Custom Properties forthe embedded symbols. Clever use of Private/Public
• Use of Owning Object/SetCustomProperty/ShowGraphic
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
InTouch tags show the last known value immediately, while ArchestrAcommunications will identify initializing data. Once the graphic hasbeen fully rendered, the data required by the window must beinitialized and this can result in a slow operator experience.
Call Up Time: Data BindingShowSymbol/ShowGraphic pre 2012R2
Slide 28
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
• How to improve the binding time?
– “Round robin” considerations
•GR or not GR ?
•MyContainer / myArea / myEngine Vs Static References– For top performance uses Static References. (me.attribute is considered
static reference)
– Intouch:MemoryTags
– Redirection using OwningObject (improved reference binding algorithm)
– SetCustomPropertyValue (script execution time reduced by 80%)
– SHOW GRAPHIC IMPROVEMENTS “INTRO”
Call Up Time: Data Binding
Slide 29
• How to improve the binding time?
– “Round robin” considerations
•GR or not GR ?
•MyContainer / myArea / myEngine Vs Static References– For top performance uses Static References. (me.attribute is considered
static reference)
– Intouch:MemoryTags
– Redirection using OwningObject (improved reference binding algorithm)
– SetCustomPropertyValue (script execution time reduced by 80%)
– SHOW GRAPHIC IMPROVEMENTS “INTRO”
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
From the OPC DI manual:
The item syntax for array elements is<sg>.Attribute(<item>)[<index>]
DI objects are special Objects with Dynamic arrays and properties.
The Attribute() keyword is used to identify which references are IOproperties of the DI objects from internal dynamic properties.
ALWAYS use the Attribute() keyword in your references.
Call Up Time: Hitting GR Node
Slide 30
From the OPC DI manual:
The item syntax for array elements is<sg>.Attribute(<item>)[<index>]
DI objects are special Objects with Dynamic arrays and properties.
The Attribute() keyword is used to identify which references are IOproperties of the DI objects from internal dynamic properties.
ALWAYS use the Attribute() keyword in your references.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Possible Scenarios:
• Turning off many PLCS will cause a lot of references to go bad andwill hit the GR node causing poor performance to the GR node.
• DI Objects undeploy
• Massive use of relative references
The importance of monitor binding counts:
Logger: wwpackageserver ReferenceBinding
ObjectViewer: GRNodePlatform.GR.BindCnt
Call Up Time: Hitting GR Node
Slide 31
Possible Scenarios:
• Turning off many PLCS will cause a lot of references to go bad andwill hit the GR node causing poor performance to the GR node.
• DI Objects undeploy
• Massive use of relative references
The importance of monitor binding counts:
Logger: wwpackageserver ReferenceBinding
ObjectViewer: GRNodePlatform.GR.BindCnt
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Hitting GR Node
Example of anOPC DI objectUndeploy andDeploy
Slide 32
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Hitting GR Node
•TEST CASE•Number of Off Line Platforms•Number Off Line redundant Platforms
Slide 33
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
• How to improve the binding time?
– Redirection using OwningObject property (improved reference bindingalgorithm)
– Redirection using SetCustomPropertyValue function (script execution timereduced by 80%)
– Redirection using Show Graphic
Call Up Time: Data Binding
Slide 34
• How to improve the binding time?
– Redirection using OwningObject property (improved reference bindingalgorithm)
– Redirection using SetCustomPropertyValue function (script execution timereduced by 80%)
– Redirection using Show Graphic
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
The new “ShowGraphic” function extends the flexibility of the productand improves the concept of OwningObject and DynamicReferences: everything is now embedded parameter of the mainfunction and natively resolved.
Call Up Time: Data Binding
Slide 35
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Dim graphicInfo as aaGraphic.GraphicInfo;
Dim cpValues [2] as aaGraphic.CustomPropertyValuePair;
cpValues[1] = new aaGraphic.CustomPropertyValuePair("CP1", 20, true);
cpValues[2] = new aaGraphic.CustomPropertyValuePair("CP2", "Pump.PV.TagName", false);
graphicInfo.Identity = "i1";
graphicInfo.GraphicName = "S1";
graphicInfo.OwningObject = "UserDefined_001";
graphicInfo.WindowTitle = "ShowGraphic";
graphicInfo.Resizable = false;
graphicInfo.CustomProperties=cpValues;
ShowGraphic( graphicInfo );
Call Up Time: ShowGraphic
Slide 36
Dim graphicInfo as aaGraphic.GraphicInfo;
Dim cpValues [2] as aaGraphic.CustomPropertyValuePair;
cpValues[1] = new aaGraphic.CustomPropertyValuePair("CP1", 20, true);
cpValues[2] = new aaGraphic.CustomPropertyValuePair("CP2", "Pump.PV.TagName", false);
graphicInfo.Identity = "i1";
graphicInfo.GraphicName = "S1";
graphicInfo.OwningObject = "UserDefined_001";
graphicInfo.WindowTitle = "ShowGraphic";
graphicInfo.Resizable = false;
graphicInfo.CustomProperties=cpValues;
ShowGraphic( graphicInfo );
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Rendering
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Slide 37
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: RenderingThe rendering time is impacted by the high number of primitiveinvokes: each single line, circle, textbox we are drawing has a cost.
• Extremely high definition of small details can impact the renderingperformance
• Reusing multiple times an extremely hi detailed small icon symbolcan reduce the rendering performance of the entire application
• Gradients, transparencies, graphical effects that need runtimecalculation can impact rendering performance (CPU vs GPU: GDI+ vsGDI)
Slide 38
The rendering time is impacted by the high number of primitiveinvokes: each single line, circle, textbox we are drawing has a cost.
• Extremely high definition of small details can impact the renderingperformance
• Reusing multiple times an extremely hi detailed small icon symbolcan reduce the rendering performance of the entire application
• Gradients, transparencies, graphical effects that need runtimecalculation can impact rendering performance (CPU vs GPU: GDI+ vsGDI)
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: RenderingThe Urban Legend
Is it more efficient to include 1000ArchestrA Graphics in one InTouch window,or to have 1 ArchestrA Graphic containing1000 embedded ArchestrA graphics?• 1 ArchestrA Graphic with 1000 graphics:
as mentioned before, each invoke has acost. 1000 InTouch calls to the ArchestrAgraphic library vs. only 1.
• 2 You are ready for the future! ArchestrAgraphics are ready to evolve takingadvantage of the next evolutions of the.NET framework.
Slide 39
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
• 1 ArchestrA Graphic with 1000 graphics:as mentioned before, each invoke has acost. 1000 InTouch calls to the ArchestrAgraphic library vs. only 1.
• 2 You are ready for the future! ArchestrAgraphics are ready to evolve takingadvantage of the next evolutions of the.NET framework.
Call Up Time: Rendering Gradients
The definition of gradients are the colors and the type of gradients.
• All of the individual colors are calculated at runtime when initiallyrendered and any time an animation changes the gradient.
– When large numbers of graphic elements (1000’s) using gradients are usedthe impact can be severe.
• This information consumes more memory than a solid fill.
• Be careful of a larger number of small graphic elements usinggradients. The effect may be minimal visually but severe in terms ofperformance.
• Transparencies have a similar performance impact.
Slide 40
The definition of gradients are the colors and the type of gradients.
• All of the individual colors are calculated at runtime when initiallyrendered and any time an animation changes the gradient.
– When large numbers of graphic elements (1000’s) using gradients are usedthe impact can be severe.
• This information consumes more memory than a solid fill.
• Be careful of a larger number of small graphic elements usinggradients. The effect may be minimal visually but severe in terms ofperformance.
• Transparencies have a similar performance impact.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Rendering Gradients
Same Embedded Symbol (justresized)
• Same Detail
• Same Calculations
• Same Cost
• Different Visual Value
• A simple PNG image, is this caseperform much better.
Slide 41
Same Embedded Symbol (justresized)
• Same Detail
• Same Calculations
• Same Cost
• Different Visual Value
• A simple PNG image, is this caseperform much better.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Symbol Embedding Pitfall ExampleStatus Symbol is created.
This will be used on everypiece of equipment.
There may be hundreds onthe window.
It is made of many largedetailed elements.
Slide 42
Status Symbol is created.
This will be used on everypiece of equipment.
There may be hundreds onthe window.
It is made of many largedetailed elements.
Effects Vs Efficiency
• Which information the gradient is adding to the operator ?
• Which information the icon is adding to the operator ?
• Which priority is the Alarm ? All Icons have the same color.
Slide 43
• Which information the gradient is adding to the operator ?
• Which information the icon is adding to the operator ?
• Which priority is the Alarm ? All Icons have the same color.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Effects Vs Efficiency
• Which valve is in Alarm ?
• Which priority is the Alarm ?
Slide 44
Effects Vs Efficiency
• Which valve is in Alarm ?
• Which priority is the Alarm ?
Slide 45
Behind ArchestrA graphics: RemoteDesktop Protocol
Remote Desktop Protocol: GDI Acceleration Extension
<<..For example, instead of sending the bitmap image of a filledrectangle from server to client, an order to render a rectangle atcoordinate (X, Y) with a given width, height, and fill color is sent tothe client. The client then executes the drawing order to producethe intended graphics result..>>
+ COMPRESSION
+ SECURE LAYER
http://msdn.microsoft.com/en-us/library/cc239611.aspx
Slide 46
Remote Desktop Protocol: GDI Acceleration Extension
<<..For example, instead of sending the bitmap image of a filledrectangle from server to client, an order to render a rectangle atcoordinate (X, Y) with a given width, height, and fill color is sent tothe client. The client then executes the drawing order to producethe intended graphics result..>>
+ COMPRESSION
+ SECURE LAYER
http://msdn.microsoft.com/en-us/library/cc239611.aspx
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
RDP Order message example
Slide 47
Rendering Performance Demo
Application Server 2014 introduces KPI to evaluate general Symbolperformance.
How to use RDP to measure rendering performance of our ArchestrAgraphics.
• Simulate the process
• Performance Monitor
• Network Interface – BytesSent/Sec.
Slide 48
Application Server 2014 introduces KPI to evaluate general Symbolperformance.
How to use RDP to measure rendering performance of our ArchestrAgraphics.
• Simulate the process
• Performance Monitor
• Network Interface – BytesSent/Sec.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Standard ArchestrA Graphic 463 Kbytes/sec
Slide 49
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Optimized 1 ArchestrA Graphic 335 Kbytes/sec
• PRO: Bandwidth and Rendering performance optimized ! (-28%)
• CONS: a lot of Variation in the rendering performance
Slide 50
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Optimized Sprite TIFF 298 Kbytes/sec
• PRO: Bandwidth and Rendering performance optimized ! ( -32% )
• PRO: less Variation: more consistent rendering performance
• CONS: extra work designing graphics “sprite oriented”
Slide 51
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
TEST: What is this trend about ?
Slide 52
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Animating something on top of something else, willcause sprite repaint.
Slide 53
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Demo:• Example_0003• Example_0004• Monitor Network• Delta bandwidth between the two implementations
Slide 54
Demo:• Example_0003• Example_0004• Monitor Network• Delta bandwidth between the two implementations
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance
Recommendation:• Top performance: when designing big graphics with
high number of moving elements always consider toreduce as much as possible background details.
• Example from “HMI handbook”: the indicator ismoving on a clean background!
Slide 55
Recommendation:• Top performance: when designing big graphics with
high number of moving elements always consider toreduce as much as possible background details.
• Example from “HMI handbook”: the indicator ismoving on a clean background!
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Rendering Performance Demo
Simple test to verify rendering performance
Rendering Time : ALT + TAB
• Standard Symbol Slow
• Optimized Symbol 1 Good
• Optimized Symbol 2 Fast Rendering
• Optimized Symbol Sprite TIFF Fastest Rendering
Slide 56
Simple test to verify rendering performance
Rendering Time : ALT + TAB
• Standard Symbol Slow
• Optimized Symbol 1 Good
• Optimized Symbol 2 Fast Rendering
• Optimized Symbol Sprite TIFF Fastest Rendering
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: Waiting data
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Slide 57
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call-Up Time: Waiting for Data
Recap on where we are now:
• Graphic has been loaded
• References have been subscribed and activated
• Graphic has been presented to the user
• We are waiting for a new value: comparison Active All / Active onDemand.
Slide 58
Recap on where we are now:
• Graphic has been loaded
• References have been subscribed and activated
• Graphic has been presented to the user
• We are waiting for a new value: comparison Active All / Active onDemand.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call-Up Time Advanced concepts: Activeon Demand
Call-Up Time
Retrieve RenderBind Close
Waiting Data…
ArchestrAGraphic
Engine DI OBJECT 1 Sec. 1 Sec. 1 Sec. 1 Sec.
ExpressionsEvaluation
Continuous
Delta ExpressionsEvaluation
Delta ExpressionsEvaluation
Cached Data
Slide 59
OPERATOR REQUEST NEW VALUES
DAS 1 Sec. 1 Sec. 1 Sec. 1 Sec.
Control Layer
ACT
TAG ACTIVE
DataChange
Read Read Read Read
DataChange
DataChange
Call-Up Time Advanced concepts:ActiveAll
Call-Up Time
Retrieve RenderBind Close
Waiting Data…
ArchestrAGraphic
Engine DI OBJECT 1 Sec. 1 Sec. 1 Sec. 1 Sec.
ExpressionsEvaluation
Continuous
Delta ExpressionsEvaluation
Delta ExpressionsEvaluation
ExpressionsEvaluation
Slide 60
OPERATOR REQUEST NEW VALUES
DAS 1 Sec. 1 Sec. 1 Sec. 1 Sec.1 Sec.
Control Layer
TAG ACTIVE
DataChange
DataChange
DataChange
Call Up Time: Static CPU utilization
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Slide 61
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Static CPU Utilization
Once a window has been rendered on the screen there are factors thatcan result in a greater CPU utilization.
When this occurs there can be other impacts:
• System becomes unresponsive
• Fewer Terminal Server Sessions can be run on the server as othersessions become unresponsive.
• There are many contributing factors
Slide 62
Once a window has been rendered on the screen there are factors thatcan result in a greater CPU utilization.
When this occurs there can be other impacts:
• System becomes unresponsive
• Fewer Terminal Server Sessions can be run on the server as othersessions become unresponsive.
• There are many contributing factors
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
BitmapsArchestrA Graphics support multiple formats (BMP, GIF, JPG, TIF, PNG,
ICO, EMF). Bitmaps are the most expensive but also most common.
Format Typical CompressionRatios
Description
GIF 4:1 - 10:1 Lossless for images <=256 colors. Works best for flat color, sharp-edged art. Horizontally oriented bands of color compress better thanvertically oriented bands.
JPEG (High) 10:1 - 20:1 High quality - has little or no loss in image quality with continuoustone originals. Worse results for flat color and sharp-edge art.
Slide 63
High quality - has little or no loss in image quality with continuoustone originals. Worse results for flat color and sharp-edge art.
JPEG(Medium)
30:1 - 50:1 Moderate quality - usually the best choice for the Web.
JPEG (Low) 60:1 - 100:1 Poor quality - suitable for thumbnails and previews. Visible blockiness(pixelation).
PNG 10-30% smaller than GIFs PNG's behave similarly to GIFs only better; they work best with flat-color, sharp-edged art. PNGs compress both horizontally andvertically, so solid blocks of color generally compress best.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Bitmap Common Pitfalls
• Embed a large picture and resize toa small one
• Both take the same size on disk
• Retake image at smaller size andsave as compressed format
Slide 64
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
10 Mbytes picture
Which value has the logo for theoperator ?
• What about a clock?
• What about key KPIs?
– Alarm rate Alarms/Hour
– Pieces per Minute
– Batch: Runs per week
Slide 65
• What about a clock?
• What about key KPIs?
– Alarm rate Alarms/Hour
– Pieces per Minute
– Batch: Runs per week
Animations impact on CPUAlways consider the size of the graphic elements you are moving on the screen
and the complexity of the background.
Demo: TREND Example_0001_Step7
• Static CPU Utilization DEMO
• From 85%+ of 1 CPU to 9% of 1 CPU
Slide 66
Always consider the size of the graphic elements you are moving on the screenand the complexity of the background.
Demo: TREND Example_0001_Step7
• Static CPU Utilization DEMO
• From 85%+ of 1 CPU to 9% of 1 CPU
Custom Property Density
Custom Properties have been greatly optimized in InTouch 2012 whichhas resulted in better performance.
Some customers have ended up with 20,000 plus custom properties ona symbol.
Typically an impact of embedding many symbols at many levels.
Should consider necessity of the variables and consider if they shouldreside server side.
• Is it needed for graphic presentation?
• Is the value specific to only this workstation?
Slide 67
Custom Properties have been greatly optimized in InTouch 2012 whichhas resulted in better performance.
Some customers have ended up with 20,000 plus custom properties ona symbol.
Typically an impact of embedding many symbols at many levels.
Should consider necessity of the variables and consider if they shouldreside server side.
• Is it needed for graphic presentation?
• Is the value specific to only this workstation?
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Multi-Variable Expressions
Each variable must be subscribed, bound and published individually.
• Can the calculation be done server side?
• Is the value specific to this specific workstation?
Expressions are ad-hoc scripts and require execution.
• The AppEngine is better suited to executing volumes of scripts andshould be used to handle load where possible.
Slide 68
Each variable must be subscribed, bound and published individually.
• Can the calculation be done server side?
• Is the value specific to this specific workstation?
Expressions are ad-hoc scripts and require execution.
• The AppEngine is better suited to executing volumes of scripts andshould be used to handle load where possible.
Expressions: code efficiencyAvoid high number of Expressions with string operations like:
• String find
• String replace
If you cannot avoid, use the .net system.string class functions.
ArchestrA strings functions are designed for automation and aregeneral purpose, the built in functions are not Top Performancefunctions. General recommendation check .net documentation for thefunction that best fit your requirements.
System.String.Concat, Join, “+”, StringBuilder
System.String.Contains
System.String.IndexOf
Slide 69
Avoid high number of Expressions with string operations like:
• String find
• String replace
If you cannot avoid, use the .net system.string class functions.
ArchestrA strings functions are designed for automation and aregeneral purpose, the built in functions are not Top Performancefunctions. General recommendation check .net documentation for thefunction that best fit your requirements.
System.String.Concat, Join, “+”, StringBuilder
System.String.Contains
System.String.IndexOf
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Script Utilization
ArchestrA Graphics are extremely flexible in their ability to executescripts (On Show, While Showing, On Close, Data Change,Condition). Carefully plan the usage of scripts that will cyclicallyexecute.
• If you are setting a script to run every 50ms, why?
• Is every execution needed? Is the same result calculated over andover?
• How many scripts are in the symbol?
• How many instances of the symbol will be used?
• Can the script be server side?
Slide 70
ArchestrA Graphics are extremely flexible in their ability to executescripts (On Show, While Showing, On Close, Data Change,Condition). Carefully plan the usage of scripts that will cyclicallyexecute.
• If you are setting a script to run every 50ms, why?
• Is every execution needed? Is the same result calculated over andover?
• How many scripts are in the symbol?
• How many instances of the symbol will be used?
• Can the script be server side?
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
CPU affinity for terminal server
Slide 71
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Call Up Time: 360 degree
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Slide 72
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Symbol Embedding
The implications of embedding symbols are often not considered.
• When embedding several layers of symbols, remember that the finalsymbol will have every custom property, script, and graphic elementfrom all of the individual symbols.
• Layering/stacking and then resizing symbols is very easy to do butcomes at a cost.
• Are there details on the symbols that are not visible at the size it isembedded?
Slide 73
The implications of embedding symbols are often not considered.
• When embedding several layers of symbols, remember that the finalsymbol will have every custom property, script, and graphic elementfrom all of the individual symbols.
• Layering/stacking and then resizing symbols is very easy to do butcomes at a cost.
• Are there details on the symbols that are not visible at the size it isembedded?
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Symbol Embedding
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 1
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 3
Graphic Element
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 2
Nameicsizechange,anchorpoint
Symbol3
Graphic Element
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 2
Nameicsizechange,anchorpoint
Symbol3
Graphic Element
Slide 74
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Symbol Embedding
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 1
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 3
Graphic Element
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 2
Nameicsizechange,anchorpoint
Symbol3
Graphic Element
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Symbol 2
Nameicsizechange,anchorpoint
Symbol3
Graphic Element
Slide 75
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Definition of the Symbol cost 430 bytes
Symbol Embedding
430 BYTES !!!Common reaction
in the3rd millennium.
Slide 76
430 BYTES !!!Common reaction
in the3rd millennium.
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Symbol Embedding example
430 bytes.
Name,X,Y,Width,Height,angle,absoluteorigin,transparency,locked,dynamicsizechange,anchorpoint
Final Valve Symbol
########
Slide 77
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Graphic Elements########
Intermediate Symbols
14 Intermediate Symbols, for the base valve symbol.
Symbol Embedding Impact on a huge Applications
430 bytes* 15 Embeds levels
* 200 graphics*337 windows/popups
=434’730’000 bytes
a.k.a. 434 MegaBytesa.k.a. 0.434 GigaBytes
Slide 78
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
430 bytes* 15 Embeds levels
* 200 graphics*337 windows/popups
=434’730’000 bytes
a.k.a. 434 MegaBytesa.k.a. 0.434 GigaBytes
Symbol Embedding Impact on a huge Applications
DEMOExample_0001Step 1 and 3
Impact on loading time
Slide 79
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
DEMOExample_0001Step 1 and 3
Impact on loading time
Hardware Choices
What hardware choices can be made to give best results?
1. Fast CPU Clock – (WindowViewer only uses one processor/core, so afaster dual core is preferred over a slower quad core).
2. Available RAM – Have 3Gb available for each WindowViewer session
3. Fast Hard Drive – Solid State
4. FAST GPU
Slide 80
What hardware choices can be made to give best results?
1. Fast CPU Clock – (WindowViewer only uses one processor/core, so afaster dual core is preferred over a slower quad core).
2. Available RAM – Have 3Gb available for each WindowViewer session
3. Fast Hard Drive – Solid State
4. FAST GPU
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Do Graphics Have to be Simple toPerform?
Call up time is under 1 secand static CPU load is~1%.
DO SIMPLE GRAPHICSALWAYS PERFORM ?
Slide 81
Call up time is under 1 secand static CPU load is~1%.
DO SIMPLE GRAPHICSALWAYS PERFORM ?
Do Graphics Have to be Simple toPerform?
Does the graphic that I just show you really perform ?
Which equipment we were looking at ?
Which information it was showing ?
Which values where you able to read ?
How many analog ?
Was the system happy or in trouble ?
Slide 82
Does the graphic that I just show you really perform ?
Which equipment we were looking at ?
Which information it was showing ?
Which values where you able to read ?
How many analog ?
Was the system happy or in trouble ?
What is this graphic about ?
Slide 83
Development PerformanceConsiderationsPerformance impact on IDE using ArchestrA graphics:
Slide 84
$Template1.Graphic1
CustomProperty1/ Reference1
CustomPropertyN/ ReferenceN
..
.
Development PerformanceConsiderationsPerformance impact on IDE using ArchestrA graphics:
Slide 85
$Template1.Graphic1
Instance1.Graphic1
CustomPropertyN/ ReferenceN
..
.
CustomProperty1/ Reference1
Development PerformanceConsiderationsPerformance impact on IDE using ArchestrA graphics:
Instance4.Graphic1
Instance5.Graphic1
Slide 86
$Template1.Graphic1
Instance1.Graphic1
Instance2.Graphic1
Instance3.Graphic1
Instance4.Graphic1
Development PerformanceConsiderationsPerformance impact on IDE using ArchestrA graphics:
Instance4.Graphic1
Slide 87
THIS IS NOT A BUG !
IT IS JUST A SPIDER$Template1.Graphic1
Instance1.Graphic1
Instance2.Graphic1
Instance3.Graphic1
Instance4.Graphic1
$Template1.Graphic2
Instance1.Graphic2 Instance2.Graphic2
Development PerformanceConsiderations• Do not define 100 graphics in the base valve template if you
are planning to have 5000 instances of the specific valve,propagation of a small change will take hours.
• ArchestrA System Platform 2012 has a lot of improvements to addressIDE performance.
• Invensys development is still working to improve in future versionsIDE performance.
Slide 88
• Do not define 100 graphics in the base valve template if youare planning to have 5000 instances of the specific valve,propagation of a small change will take hours.
• ArchestrA System Platform 2012 has a lot of improvements to addressIDE performance.
• Invensys development is still working to improve in future versionsIDE performance.
1. Development Performance vs. Runtime Performance
1.Never use the Development experience to evaluate the performance of yourArchestrA graphic application. Short overview and description on theArchestrA graphics SQL storage layer and architecture.
Development PerformanceConsiderations
Slide 89
CloseRetrieve RenderBind Waiting Data… ExpressionEvaluation
Render
Visualization Stability Enhancements inInTouch 2012Problems
• Windows based on A2 Graphics
– Render slow compared to nativeInTouch
– Consume more memory thancomparable native InTouch
• InTouch runs on CPU-0 regardless ofthe number of cores
InTouch 2012 Approach
• Refactored various internalcomponents of A2 Graphics toreduce memory footprint in runtime(Removed design time data fromruntime environment)
• Refactored Custom Property codeand SetCustomPropertyValuefunction for improved data bindingperformance
• Support binding to any core in thecomputer (still runs in a single core)
Slide 90
Problems
• Windows based on A2 Graphics
– Render slow compared to nativeInTouch
– Consume more memory thancomparable native InTouch
• InTouch runs on CPU-0 regardless ofthe number of cores
InTouch 2012 Approach
• Refactored various internalcomponents of A2 Graphics toreduce memory footprint in runtime(Removed design time data fromruntime environment)
• Refactored Custom Property codeand SetCustomPropertyValuefunction for improved data bindingperformance
• Support binding to any core in thecomputer (still runs in a single core)
ReferencesTech Note 628
Advanced Communication Management for Application Server
Tech Note 644Improving Application Performance with ArchestrA Graphics
The high performance HMI handbookImproving Application Performance with ArchestrA Graphics
Slide 91
Contributors• Marilou Aguinaldo, Invensys Senior Technical Support Engineer
• John Krajewski, Invensys Product Manager HMI/SCADA
• Ryan Van Slooten, Invensys ArchestrA Application Specialist
• Ken Cook, Invensys ArchestrA Applications Consultant
• Bruce Schultz, Invensys Principal Software Development Engineer
• TopoGigia
Slide 92
• Marilou Aguinaldo, Invensys Senior Technical Support Engineer
• John Krajewski, Invensys Product Manager HMI/SCADA
• Ryan Van Slooten, Invensys ArchestrA Application Specialist
• Ken Cook, Invensys ArchestrA Applications Consultant
• Bruce Schultz, Invensys Principal Software Development Engineer
• TopoGigia
Questions?
Slide 93
THANK YOU
Slide 94