Neat! I did some playing as well the other day:
https://github.com/davisp/nif-examples/tree/master/apps/dirty_sched https://github.com/davisp/dsprof I was mostly just interested in the overhead of shunting to a dirty scheduler vs making direct calls. I ended up seeing a 20-40 microsecond overhead between a direct call and using dirty schedulers which means I'll probably stick with making Jiffy yield properly rather than using dirty schedulers. For other NIFs I could definitely see them being useful though (ie, interacting with external libraries where you can't yield easily). On Fri, Feb 14, 2014 at 9:37 AM, Dave Cottlehuber <[email protected]> wrote: > No doubt of interest here too. > > > ---------- Forwarded message ---------- > From: Vincent Siliakus <[email protected]> > Date: 14 February 2014 14:20 > Subject: Re: [elixir-talk:2800] Sundown NIF library apart from ExDoc > To: [email protected] > Cc: Devin Torres <[email protected]>, [email protected] > > > For those interested, here's a follow-up after my initial dirty > scheduler experiments with the markdown library: > > After posting a question on the erlang mailing list about some of the > new dirty scheduler functionality and getting a reply from the Steve > Vinoski, who actually implemented dirty schedulers in OTP 17.0, we > continued to have some discussion off list. Steve was kind enough to > have a look at my implementation and do some profiling. His > conclusions are that my implementation is fine and that the results > matches his expectations. > > I also posted some results of a slightly updated version of the ring > benchmark that I described in a previous post of this mail list thread > here: > > https://gist.github.com/zambal/8974206 > > You can see what dirty schedulers can do in the last test where large > documents are parsed and iex is started with only one scheduler. The > reason that the ring benchmark still performs well when dirty > schedulers are enabled is because even with only one scheduler, the > erlang run-time system still uses a separate OS thread for the dirty > NIF. > > The other tests show that the run-time system is actually pretty smart > in scheduling processes. Even with dirty schedulers disabled, the test > that parses large documents still performs quite good when using 2 > normal schedulers, indicating that all or at least most ring benchmark > processes are scheduled on one core and the markdown parsing on > another. However, using dirty schedulers for long performing NIFs is > still advised when using multiple cores, because in a more complex > real world scenario, changes are that the normal schedulers will start > to behave badly when not used. > > > -- > You received this message because you are subscribed to the Google > Groups "elixir-lang-talk" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out.
