[erlang-questions] +swt very_low doesn't seem to avoid schedulers getting
Patrik Nyblom
pan@REDACTED
Tue Oct 16 15:44:50 CEST 2012
Hi!
On 10/16/2012 01:08 PM, Vance Shipley wrote:
> Rickard,
>
> Maybe you can offer some insight into a problem I'm having. I have
> a linked in driver which uses port level blocking with many ports.
> The driver uses driver_set_timer() to wake up in so many milliseconds
> (e.g. 10ms) to do a small amount of work in it's timeout() callback.
> What we see is that despite a low CPU usage and multiple schedulers
> often the timeout will be called quite late (e.g. 10-20ms late).
What does the other callbacks in your driver do? Anything that could
take 10-20 ms? In that case it's normal, your port is locked for what
would be considered a very long time in a driver.
> I have spent quite a bit of time looking at the implementation of the
> schedulers but am not sure what's going on. I am beginning to think
> the shceduler is going off to do aux work.
>
> We've tried changing +swt without effect. What do you think?
>
> On Wed, Oct 10, 2012 at 09:12:23PM +0200, Rickard Green wrote:
> } This compaction of load onto fewer schedulers is there in order to
> } reduce communication overhead when there aren't enough work to
> } fully utilize all schedulers. The performance gain of this
> } compaction depends on the hardware.
Cheers,
/Patrik
More information about the erlang-questions
mailing list