Remember that Go vs D MQTT thing and how we wondered about dmd vs gdc?

Etienne etcimon at gmail.com
Wed Mar 12 11:05:36 PDT 2014


On Wednesday, 12 March 2014 at 15:11:45 UTC, Etienne wrote:
> On Wednesday, 12 March 2014 at 12:10:04 UTC, Bienlein wrote:
>> On Wednesday, 12 March 2014 at 09:26:28 UTC, Sönke Ludwig 
>> wrote:
>>
>>> I actually don't see a reason why it can't be just as 
>>> efficient when done as a library. Taking the example of 
>>> vibe.d, fibers are currently never moved between threads 
>>> (although technically, they could), but they are still stored 
>>> in a free list and reused for later tasks.
>>
>> I believe several kernel threads are in the play to call 
>> fibers. Then the free list must be synchronized which can make 
>> a difference on a heavy loaded system at the end of the day. 
>> HawtDispatch (http://hawtdispatch.fusesource.org) applies some 
>> tricks to reduce synchronization on its free lists for that 
>> reason. But I honestly don't have a clue how that exactly 
>> works.
>
> Bypassing the kernel could be more efficient for fibers if it 
> were possible, and using thread affinity it could remove some 
> interruption by setting the maxcpus option in the kernel. The 
> alternative to locking via kernel is queuing using the freeway 
> overpass method described here: 
> http://blog.erratasec.com/2013/02/multi-core-scaling-its-not-multi.html 
> I think HawtDispatch may be using queues to fit into this 
> synchronization method. Snort is also a good example of mostly 
> lock-less multi-core by using "memory mapped regions"
>
> I'm also very interested in optimizing fibers further as it 
> would give D excellence where it already does great

I think this article puts it well. Bypassing the kernel for 
fibers should be a long-term plan :)

http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html


More information about the Digitalmars-d mailing list