Showing results 1 to 5 of 5

Thread: How to improve Engineering Studio / Zenon Editor performance?

  1. #1
    Join Date
    17.02.2020
    Posts
    23

    Frage How to improve Engineering Studio / Zenon Editor performance?

    Hello,

    Currently we are developing a Zenon10 project with 860k+ tags.
    As the project size and tag numbers increase, we are facing a problem with the Editor performance. Certain operations take several minutes and sometimes hours to complete. Obviously the operations in question are related to the variable module and archives.

    For example, unchecking the "Write set value" checkbox for few variables (800 Modbus variables for example) takes several minutes to finish. Performing the same operation on more variables however (300k for example) takes hours to finish. Similar slow performance is observed when editing data structures, editing or deleting archives, and opening or closing Zenon Logic projects.

    It is worth mentioning that some variable operations finish instantly, a good example is would be updating the measuring unit field or adding a Reaction Matrix to a data structure variable that is used by thousands of tags.

    I am trying to solve this issue since it is having a serious effect on the project development.

    I noticed that the system utilization is rather low while these operations are under way. For example: CPU is 12%, RAM is 40%, Disk is 0%. The Task manager shows the Engineering Studio process as "Not responding" until the operation is finished.

    Is there a way to improve the performance of Zenon editor? allow it to utilize more system resources maybe?
    I am open to any suggestions, this includes changing the operating system or even upgrading certain Hardware parts.

    Some info:
    Development is 100% local on a capable machine
    Zenon 10 build (92805)
    Windows 10 (20H2)
    CPU: 6 cores 12 threads, 3.7Ghz, 32MB L3 cache
    RAM: 16 GB DDR4
    Disk: SSD
    Last edited by Anas_FAISAL : 24th February 2022 at 18:51

  2. #
    Join Date
    01.07.2008
    Location
    Salzburg, AT
    Posts
    1,116
    Best Answer

    Default Re: How to improve Engineering Studio / Zenon Editor performance?

    Quote Originally Posted by Anas_FAISAL View Post
    Yes, after further checking, only a single core is being utilized in this context. I assume this is by design, are there any plans to make the process run on multiple cores?
    I do not know such plan. It would demand multithreaded exchange with SQL and few more things, hmm nothing simple. There is an easy solution: scale your project.

    Quote Originally Posted by Anas_FAISAL View Post
    By the way, I have started a process on about 350K variables (unchecking the write set checkbox in Modbus tags, to be precise) and the process have been going on for about 24 hours and haven't been finished yet (The process is not responding). Am not sure whether to let it continue or terminate the process (I have a project backup).
    I don't think there is a human able to say if your Operating System, during those 24 hours on emergency conditions (where it was maybe not even able to handle correctly own interrupts) was anyway constantly able to assure for zenon and SQL applications enough resources, thus to assure no corruption of application data. Under such circumstances there is no even guarantee the OS would be able to handle the own event log properly.

    Quote Originally Posted by Anas_FAISAL View Post
    If we consider the process to be frozen and terminate it, how do you propose dividing up these variables? Performing the operations of variable groups of 32k or 64k variables maybe?
    In my test the most efficient way I found was to use XML export, search and replace in XML file and import. It is significantly faster as editing the variable properties. I guess by XML import zenon is able to push to SQL in one transfer many updates, and not one by one.

    With multi-select of variables and edit, if I right remember, I was working on maximally 6k variables at once, but the reason for this list size was just the size of my one driver connection. I didn't make a research where is the limit of quantity forcing i9 PC to 100% load on the affected core. As a graduated information system engineer I see as risky to force such OS like Windows to run more as 90% for longer as single minutes or to reach 100% on a core for longer as 2-3 seconds. And as an electronics engineer I would prefer to avoid situations where a PC constantly runs on frequency higher the nominal, especially in a non air-coditioned room. I want my PCs to run years, not just months.

    Quote Originally Posted by Anas_FAISAL View Post
    Regarding scaling the project to smaller subprojects, My current project development is nearing completion and it seems hard to me to make such change at this point.
    Sorry, but what is hard there??? With XML exports/imports, or with restore project backup as new project and deleting, you will be done in a day. Faster as now while waiting for everything.
    I scaled projects as soon I discovered that the filter in variable list needs more time I have the patience to watch the green progress line. It was huge.
    To scale is easier and faster as you probably think.

    Quote Originally Posted by Anas_FAISAL View Post
    Though I will keep this in mind for future projects. One question though, If the project was divided into subprojects within an integration project, would performing the same operation on all variables across all the subprojects be handled by more than one CPU core?
    If you scale project to subprojects you will do the editing operation on only one project at time. You cannot multiselect items in many projects.
    In SQL a (sub)project has own database.

    The integration project has full access to variables (and functions and etc.) of subprojects, so you can keep all your screens in I-project.
    Last edited by ursulak : 25th February 2022 at 15:08

  3. #2
    Join Date
    01.07.2008
    Location
    Salzburg, AT
    Posts
    1,116

    Default Re: How to improve Engineering Studio / Zenon Editor performance?

    While your Task Managed shows the CPU is 12%, but your PC has CPU with few cores/logical processors (what currently is the HW standard), it could mean that those 12% are 100% on the one core - e.g. the core where zenon main thread or SQL are running; while on other cores is 0%. You can check in Task Manager - tab: Performance - right click: change graph to -> logical processors.

    Or, if you see those only 12% but at the same time the 'Speed' of CPU is higher the nominal frequency, e.g. Speed = 4 GHz, while nominal is 3.3GHz - this is also a similar indication. If the CPU would be really on only 12% - on all cores, then the speed will be at 50-80% of nominal frequency (to keep the temperature of CPU more HW friendly).

    Basing on my experience on a PC with i9 processor (10 cores/20 logical processors): for work in Engineering Studio (Editor) with 800k variables I would propose you to scale your project to at least 3 subprojects - each with max 200k variables - and put those subprojects in one common integration project. On i9 PC my operations on the variable list were (in worst case) done in single minutes. The longest time was the compilation of the Worldview screen with 40k symbols referring 80k variables - 25 minutes. 

    When you are changing some data type definition, then zenon has to update just a single entry in the SQL databank, when variable by variable - as many SQL transactions as affected variables. So of course this can make a huge difference in times.  

    Also for Service Engine (Runtime) the project scalation will be more performant solution. Note: if you are making a zenon Network project, you can configure subprojects to use the same PC as network server. Check the CPU cores load on network server (and standby) and then decide how many PCs you need as network servers. In my tests one i9 PC was server for 3 subprojects (3x204k variables) but I'm using drivers of modern, spontaneous communication protocols, not the polling modbus. 
    For the integration project (start project) the best decision - configure it standalone (if no Web server access) and don't create in I-project the drivers communicating with PLCs (keep there variables accessing only the memory).

    One more advise: by high quantity of variables carefully design the use of CEL and AML, there is a good reason why in those modules the maximal size of the ring buffer is 32k. A flood of alarms (e.g. because of connection losses) may cause more intensive use of your PC as it would be able to process. And don't forget to disable your anti-virus to process online checks on zenon directories (with anti-virus check only 20 CEL entries/s, without - thousands). 



  4. #3
    Join Date
    17.02.2020
    Posts
    23

    Default Re: How to improve Engineering Studio / Zenon Editor performance?

    Thanks for the quick reply,

    Yes, after further checking, only a single core is being utilized in this context. I assume this is by design, are there any plans to make the process run on multiple cores?
    By the way, I have started a process on about 350K variables (unchecking the write set checkbox in Modbus tags, to be precise) and the process have been going on for about 24 hours and haven't been finished yet (The process is not responding). Am not sure whether to let it continue or terminate the process (I have a project backup). If we consider the process to be frozen and terminate it, how do you propose dividing up these variables? Performing the operations of variable groups of 32k or 64k variables maybe?

    Regarding scaling the project to smaller subprojects, My current project development is nearing completion and it seems hard to me to make such change at this point. Though I will keep this in mind for future projects. One question though, If the project was divided into subprojects within an integration project, would performing the same operation on all variables across all the subprojects be handled by more than one CPU core? or will they all be performed on the same core? I am trying to see how the subproject solution affect the operations I am trying to make in this context.

    Regarding the Service Engine performance, it looks fine so far. We were careful when configuring the drivers and the Historian. Though I did notice the effect of the Alarm flood during the development process.


  5. #4
    Join Date
    01.07.2008
    Location
    Salzburg, AT
    Posts
    1,116
    Best Answer

    Default Re: How to improve Engineering Studio / Zenon Editor performance?

    Quote Originally Posted by Anas_FAISAL View Post
    Yes, after further checking, only a single core is being utilized in this context. I assume this is by design, are there any plans to make the process run on multiple cores?
    I do not know such plan. It would demand multithreaded exchange with SQL and few more things, hmm nothing simple. There is an easy solution: scale your project.

    Quote Originally Posted by Anas_FAISAL View Post
    By the way, I have started a process on about 350K variables (unchecking the write set checkbox in Modbus tags, to be precise) and the process have been going on for about 24 hours and haven't been finished yet (The process is not responding). Am not sure whether to let it continue or terminate the process (I have a project backup).
    I don't think there is a human able to say if your Operating System, during those 24 hours on emergency conditions (where it was maybe not even able to handle correctly own interrupts) was anyway constantly able to assure for zenon and SQL applications enough resources, thus to assure no corruption of application data. Under such circumstances there is no even guarantee the OS would be able to handle the own event log properly.

    Quote Originally Posted by Anas_FAISAL View Post
    If we consider the process to be frozen and terminate it, how do you propose dividing up these variables? Performing the operations of variable groups of 32k or 64k variables maybe?
    In my test the most efficient way I found was to use XML export, search and replace in XML file and import. It is significantly faster as editing the variable properties. I guess by XML import zenon is able to push to SQL in one transfer many updates, and not one by one.

    With multi-select of variables and edit, if I right remember, I was working on maximally 6k variables at once, but the reason for this list size was just the size of my one driver connection. I didn't make a research where is the limit of quantity forcing i9 PC to 100% load on the affected core. As a graduated information system engineer I see as risky to force such OS like Windows to run more as 90% for longer as single minutes or to reach 100% on a core for longer as 2-3 seconds. And as an electronics engineer I would prefer to avoid situations where a PC constantly runs on frequency higher the nominal, especially in a non air-coditioned room. I want my PCs to run years, not just months.

    Quote Originally Posted by Anas_FAISAL View Post
    Regarding scaling the project to smaller subprojects, My current project development is nearing completion and it seems hard to me to make such change at this point.
    Sorry, but what is hard there??? With XML exports/imports, or with restore project backup as new project and deleting, you will be done in a day. Faster as now while waiting for everything.
    I scaled projects as soon I discovered that the filter in variable list needs more time I have the patience to watch the green progress line. It was huge.
    To scale is easier and faster as you probably think.

    Quote Originally Posted by Anas_FAISAL View Post
    Though I will keep this in mind for future projects. One question though, If the project was divided into subprojects within an integration project, would performing the same operation on all variables across all the subprojects be handled by more than one CPU core?
    If you scale project to subprojects you will do the editing operation on only one project at time. You cannot multiselect items in many projects.
    In SQL a (sub)project has own database.

    The integration project has full access to variables (and functions and etc.) of subprojects, so you can keep all your screens in I-project.
    Last edited by ursulak : 25th February 2022 at 15:08

  6. #5
    Join Date
    17.02.2020
    Posts
    23

    Default Re: How to improve Engineering Studio / Zenon Editor performance?

    Ok I will use XML exports/imports for now and will consider scaling the same project later on. You are right, with large projects even variable filters take several seconds to process.

    Many thanks for your informative and thorough support.


Similar Threads

  1. WPF Engineering Studio Wizard - External Controls
    By mwieczorkiewicz in forum Add-In Framework
    Replies: 0
    Last Post: 26th January 2022, 00:54
  2. Visual Studio, Config files and Zenon 7.6/8.0
    By roger_novarctech in forum Add-In Framework
    Replies: 1
    Last Post: 3rd January 2020, 23:07
  3. zenOn performance metrics
    By stolyarov_as in forum Engineering Studio & Service Engine (former zenon Editor & Runtime)
    Replies: 7
    Last Post: 18th September 2013, 00:45
  4. Zenon Process Gateway performance issues
    By shikra in forum Gateways
    Replies: 2
    Last Post: 7th February 2012, 13:54

Tags for this Thread

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •