Conversation
This allows running code written for Chronos using `-d:asyncTimer=virtual` , turning it into a simple event-based simulation. Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
|
Could you please add more explanation to this topic? |
|
I use this virtual timer for testing performance in https://github.com/codex-storage/das-dht-emulator, using UDP only. The problem it solves for me is the CPU bottleneck when emulating many instances of a process on a single machine. Normally, CPU gets bottlenecked, and you can't keep up with real time clock. If you use this timer, all CPU operations become 0 virtual time, and thus you can focus on delays and timeouts set up in the event loop. Of course there are more sophisticated approaches, but it achieves what I need with a simple patch, and mostly without modifications to the code on top. |
Previous version of virtual timer used minimal modifications. This one instead implements poll() directly, simplifying execution. It also enforces one timer each poll, which makes it compatible with one network even per poll cycle when network events are replaced by timers for simulation. Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
|
@cheatfate I have largely simplified the code. Purpose is still the same: to run simulations without code change. |
This allows running code written for Chronos using
-d:asyncTimer=virtual, turning it into a simple event-based simulation.
Used in logos-storage/logos-storage-nim-dht#57