Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • E-learning Courses
    • Open Classroom Training
    • Certification
      • DataMiner Fundamentals
      • DataMiner Configurator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
      • Verify a certificate
    • Tutorials
    • Video Library
    • Books We Like
    • >> Go to DataMiner Docs
  • Expert Center
    • Solutions & Use Cases
      • Solutions
      • Use Case Library
    • Markets & Industries
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • DataMiner Insights
      • Security
      • Integration Studio
      • System Architecture
      • DataMiner Releases & Updates
      • DataMiner Apps
    • Agile
      • Agile Webspace
      • Everything Agile
        • The Agile Manifesto
        • Best Practices
        • Retro Recipes
      • Methodologies
        • The Scrum Framework
        • Kanban
        • Extreme Programming
      • Roles
        • The Product Owner
        • The Agile Coach
        • The Quality & UX Coach (QX)
    • DataMiner DevOps Professional Program
  • Downloads
  • More
    • Feature Suggestions
    • Climb the leaderboard!
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • >> Go to dataminer.services

Dynamically change multithreaded timer polling time?

Solved1.14K views18th July 2023driver development Multi-Threaded Timer
1
Gabriel Borges [SLC] [DevOps Advocate]646 2nd September 2021 0 Comments

Hello Dojo,

So I am currently working on a driver that needs to individually poll cable modem IP's in a table and does using a multithreaded timer in a QAction, and also performs some mapping using another table. The driver has worked fine with tables with less than 10,000 rows, but there is an element that now has 19,000 rows so after a couple of minutes, SLProtocol shoots up to 100% CPU usage and stays there.

The timer is configured to run every 15 minutes, so that means that it needs to process at least 21 rows a second, which it seems it can not do. So is there a way to configure that polling cycle in the driver so that if the driver is unable to handle that many rows, it can be increased to handle a smaller load?

And if not, would decreasing the thread pool be a viable option? Or would that simply postpone the problem as more threads get placed in the queue and eventually hit the max thread size?

The timer is currently set up as so:

<Timer id="1" options="ip:1600,3;each:900000;pollingrate:15,3,3;threadPool:300,5,301,302,303,304,305,30000;dynamicthreadpool:300;qactionBefore:1600">
<!-- every 15 min [900000]-->
<Name>cmFastTimer</Name>
<Time>1000</Time>
<Interval>75</Interval>
<Content>
<Group>1</Group>
</Content>
</Timer>

Marieke Goethals [SLC] [DevOps Catalyst] Selected answer as best 18th July 2023

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
4
Laurens Moutton [SLC] [DevOps Enabler]8.68K Posted 3rd September 2021 0 Comments

Hi,

That "each:900000" is a hardcoded value that cannot be changed at runtime. The [Timer base] setting only affects the <Time> setting as far as I'm aware, so that's not an option for multi threaded timers.

Decreasing the thread pool would not be a good option, if the element doesn't have the resources to do its work then it will add it to the waiting queue until the max is reached.

As SLProtocol also hits 100% CPU it means it can't handle the load (and increasing the thread pool also won't be an option).

That means that you have 3 options here:

  • Improve the code so it can execute faster: identify bottlenecks in the code and look for alternatives of those bottlenecks
  • Split up the load over more elements/ or DMA: if CPU uses 100% then it might be considered to add more hardware resources (a better CPU or add another agent)
  • If above options are not desired then find a way to reduce the timer speed: add a "count" column and poll all the snmp data through the QAction via NotifyProtocol. If the QAction gets called check the count column and add +1 if the value is equal or above the count limit then further continue to execute the code else abort (when further executing the code then reset the counter value again). The "count limit" value depends on the number of rows in the table: when < 10000 then count limit is 1 (execute each time), when between 10000 and 20000 the count limit is 2: that way the timer speed will be reduced, there will of course be some overhead because the QAction needs to be started every time but by aborting asap without polling anything it will hopefully be enough to not use up all hardware resources and don't build up items in the waiting queue.
Marieke Goethals [SLC] [DevOps Catalyst] Selected answer as best 18th July 2023
Please login to be able to comment or post an answer.

My DevOps rank

DevOps Members get more insights on their profile page.

My user earnings

0 Dojo credits

Spend your credits in our swag shop.

0 Reputation points

Boost your reputation, climb the leaderboard.

Promo banner DataMiner DevOps Professiona Program
DataMiner Integration Studio (DIS)
Empower Katas

Recent questions

Alarm Dashboard PDF/CSV Export 1 Answer | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes

Question Tags

adl2099 (115) alarm (62) Alarm Console (82) alarms (100) alarm template (83) Automation (223) automation scipt (111) Automation script (167) backup (71) Cassandra (180) Connector (108) Correlation (68) Cube (150) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (139) driver (65) DVE (55) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (151) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) services (51) SNMP (86) SRM (337) table (54) trending (87) upgrade (62) Visio (539) Visual Overview (345)
Privacy Policy • Terms & Conditions • Contact

© 2025 Skyline Communications. All rights reserved.

DOJO Q&A widget

Can't find what you need?

? Explore the Q&A DataMiner Docs

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin