[clam-devel] [Fwd: [ liblf-dev] [Fwd: Re: [Orocos-Dev] portable rtt]]

Pau Arumi parumi at iua.upf.edu
Tue Jan 16 02:36:46 PST 2007


yep! i sent this to the old list some days ago.

interesting lock-free data structures library. i think it might be worth 
study its applicability for clam.
i found the linked pdf very informative (and fun). it remind me the 
lock-free approach we took for port-monitors

pau


>
> Assumpte:
> [liblf-dev] [Fwd: Re: [Orocos-Dev] portable rtt]
> De:
> Tim Blechmann <TimBlechmann at gmx.net>
> Data:
> Thu, 04 Jan 2007 12:53:43 +0100
> Per a:
> liblf-dev <liblf-dev at yahoogroups.com>
>
> Per a:
> liblf-dev <liblf-dev at yahoogroups.com>
>
>
> hi all, 
>
> i've been in contact with the developers of orocos (Open Robot Control
> Software), who wrote a real-time toolkit, which provides hard-realtime
> capable c++ implementations of several lockfree data structures. it's
> currently running on linux/rtai/xenomai, but i'm trying to make the data
> strucutes more portable, to make them run on windos and osx.
>
> in the attached mail, peter soetens gives a brief overview ...
> maybe it makes sense to spend our effort on orocos's rtt, instead of
> writing a liblfds ...
>
> cheers ... tim
>
> -------- Forwarded Message --------
> From: Peter Soetens <peter.soetens at fmtc.be>
> To: orocos-dev at lists.mech.kuleuven.be
> Subject: Re: [Orocos-Dev] portable rtt
> Date: Thu, 4 Jan 2007 10:37:12 +0100
>
> On Wednesday 03 January 2007 15:23, Tim Blechmann wrote:
>   
>> there is a guy, Ross Bencina, who proposed to write a library of
>> lockfree datastructures (http://tinyurl.com/sor7u). the project hasn't
>> started, yet, but a lot of audio developers have subscribed to the
>> mailinglist. however this project got stuck a bit and after seeing rtt i
>> guess, it would be better to put the efforts into making rtt portable
>> and maybe adding implementations of new data structures, instead of
>> reinventing the wheel ...
>>     
>
> Interesting link. I recognise a lot in it and I'll add it to the related 
> projects page on Orocos.org. 
>
> Now, for the whole lock-free issue in the Real-Time Toolkit. Should it be 
> portable ? Yes. Take a look at the front page of Orocos.org, vote and see the 
> statistics: the top winners are Linux, RTAI and Windows. 
> Should it become the reference for lock-free programming ? I don't know. I'm a 
> bit surprised that the (academic) 'big shots' have not yet published a free 
> library using their algorithms. Mine are not published (by anyone!) and they 
> work very well. They have been heavily stress tested and measured on a 
> real-time operating system.
>
> This is how I designed my algorithms:
> 1. The key of all algorithms is the 'AtomicQueue'. It is a fast, fixed size 
> many readers many writers queue. It is a 100% pure lock-free algorithm. The 
> access time is in (or under) the micro seconds range, even under very heavy 
> stressing[1]. It's memory use is constant (and very low) under any number of 
> accessing threads.(See 
> <http://www.orocos.org/stable/rtt/current/api/html/classRTT_1_1AtomicQueue.html>)
>
> 2. Built on top of the AtomicQueue, is the MemoryPool. It is a fast, many 
> readers/many writers re-sizable heap of blocks which safely allocates any 
> number of objects while in use. This means that the pool can grow while 
> elements are allocated/deallocated. It is a partially 'wait-free'/'lock-free' 
> algorithm as the search for free blocks is a wait-free algorithm. (See 
> <http://www.orocos.org/stable/rtt/current/api/html/classRTT_1_1MemoryPool.html>)
>
> 3. Built on top of (1) and (2) is the BufferLockFree, a wait-free/lock-free 
> many readers/many writers fixed-size FIFO. It basically manages the memory 
> allocation using a MemoryPool and enqueues objects using an AtomicQueue. 
> Users don't notice this in the API however.
> (See 
> <http://www.orocos.org/stable/rtt/current/api/html/classRTT_1_1BufferLockFree.html>)
>
> 5. The ListLockFree is similar to the BufferLockFree but is an iterable (!) 
> linked list where concurrent inserts/removals may happen. It is used by the 
> Orocos Event.
> (See 
> <http://www.orocos.org/stable/rtt/current/api/html/classRTT_1_1ListLockFree.html>)
>
> 4. Finally, we have the DataObjectLockFree. It is the only algorithm that is 
> single writer/many readers. It makes data accessible for other readers, while 
> concurrent writes are happening.
> (See 
> <http://www.orocos.org/stable/rtt/current/api/html/classRTT_1_1DataObjectLockFree.html>)
>
> I have _none_ of the above algorithms found in a publication. Most 
> publications I saw were not real-time to start with, or just way to hard to 
> implement portably (Hazard pointers IIRC). In this way, the Orocos primitives 
> are very unique : they are _hard_ real-time *and* being used in a realistic 
> and demanding application. No academic mambo jumbo here (DCAS ?? anyone ??) 
> My favourite is the AtomicQueue, it's so damn fast and memory efficient that 
> it should be used in any multi-threaded application for exchanging pointers 
> to objects.
>
> See also my FOSDEM presentation about lock-free algorithms here:
> <http://people.mech.kuleuven.be/~psoetens/doc/Lock-Free-FOSDEM.pdf>
>
> If you'd like to share this info on another list, feel free to spread the 
> word.
>
> Peter
>
> [1]AtomicQueue: That is, for the highest priority thread, the access time is 
> constant and minimal. For lower priority threads, the access time is bounded, 
> but no longer minimal, and will be in the microsecond range.
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> CLAM-devel mailing list
> CLAM-devel at iua.upf.es
> http://iua-mail.upf.es/mailman/listinfo/clam-devel


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.





More information about the clam-devel mailing list