[erlang-questions] Any Erlang “hierarchical timing wheel” library?

Vans S vans_163@REDACTED
Tue Dec 18 16:19:57 CET 2018


 
Mnesia would handle millions of disk persistented terms.  Assuming in this case youl only be calling :mnesia.next or dirty_next, and comparing the time on it, itl be super low latency and fast.  Inserts are also very fast into ordered_set.  
    On Tuesday, December 18, 2018, 10:01:53 a.m. EST, Frank Muller <frank.muller.erl@REDACTED> wrote:  
 
 Hi Vans
I always ask first before re-implementing the wheel. The link is very good (did my home work and read almost all papers on the subject before asking).
@Vans: thanks for implementation hints.What do you suggest for persistency? Is mnesia capable of handling millions terms?
Best/Frank

 Why dont you write your own, since this is a special use case anyways that has a ton of implementations, there is no way youl find an implemenation that will fully satisfy you. Its quite simple too, Hashed and Hierarchical Timing Wheels, scheme #2 here will be VERY performant on erlang.  an ordered_set mnesia table, using dirty_next to get the first element each 1-10ms to check if a timer is ready to pop. Then spawn a new process and pass the event for handling to it.

| 
| 
|  | 
Hashed and Hierarchical Timing Wheels

Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timing Facility
 |

 |

 |




    On Tuesday, December 18, 2018, 1:22:44 a.m. EST, Torben Hoffmann <torben.lehoff@REDACTED> wrote:  
 
 This is the nearest I can think of:
https://github.com/fra/ecron/blob/master/README.md

Cheers,
Torben
On Tue, 18 Dec 2018 at 06:17, Frank Muller <frank.muller.erl@REDACTED> wrote:

Really, no library out there?
/Frank

Hi there 
I am looking for any Erlang implementation of a “hierarchical timing wheel” with disk persistency (if possible)?
I need to handle a very large number of timers (around 10 million events) in my app. Each timer will trigger an associated MFA event. 
I’ve one special case: some events can be triggered after a long period of time (ex. 2 years). The rest of the timers can be considered short (in minutes, hours or days at max). That’s why “hierarchical timing wheel” can solve this special case.
Any help/idea/link appreciated.
Thank you/Frank
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://erlang.org/mailman/listinfo/erlang-questions

-- 
https://www.linkedin.com/in/torbenhoffmann/
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://erlang.org/mailman/listinfo/erlang-questions
  
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20181218/cea03297/attachment.htm>


More information about the erlang-questions mailing list