A new article Distributed Reader-Writer Mutex describes design and implementation of a simple yet scalable rw mutex. The mutex uses an interesting technique of per-processor data. Results of a benchmark against plain pthread_rwlock_t are presented.
By the way, I've changed code license on the site, now all code is covered by the Simplified BSD License.
Monday, January 31, 2011
Thursday, January 27, 2011
Per-processor Data
A new article Per-processor Data is available under Lockfree/Tips&Tricks section. It introduces an interesting technique of per-processor data, as well as some implementation aspects.
Case Study: MultiLane - a concurrent blocking multiset
I've published a new article Case Study: MultiLane - a concurrent blocking multiset. It's about Dave Dice et al paper of the same name. The paper describes MultiLane technique which can be used to improve scalability of producer-consumer systems. I also describe some alternative architectural approaches to the problem.
Monday, January 24, 2011
Lockfree Tips&Tricks
Hi!
I've kicked off a new subsection Lockfree/Tips&Tricks, in which I collect various separate topics related to design and implementation of synchronization algorithms. There are 2 articles for warm-up: Spinning (active/passive/hybrid, pros&cons, implementation) and Pointer Packing.
Saturday, January 22, 2011
Lock-Free Link Pack
Check out updated Lock-Free Links page. There you will find links to books, blogs, websites, research groups, separate articles and some sources to study. Perhaps, more than I ever needs to know about synchronization algorithms :)
Have I read all that? Well, mostly, but not all :)
Have I read all that? Well, mostly, but not all :)
Friday, January 21, 2011
Case Study: FastFlow Queue
Hi!
I've posted a new article Case Study: FastFlow Queue, in which I examine design and implementation of a nonblocking single-producer/single-consumer queue, which used as a base building block in the FastFlow multicore programming library. In the second part of the article I design and implement "a better" queue. Benchmark results confirm better performance and scalability.
By the way, thanks to all who has participated in the poll onleft right pane.
I've posted a new article Case Study: FastFlow Queue, in which I examine design and implementation of a nonblocking single-producer/single-consumer queue, which used as a base building block in the FastFlow multicore programming library. In the second part of the article I design and implement "a better" queue. Benchmark results confirm better performance and scalability.
By the way, thanks to all who has participated in the poll on
Saturday, January 8, 2011
Alternative web addresses
It seems that Google hosting periodically has outages. Just in case you have problems accessing the main URL, you can use the following one:
http://sites.google.com/site/1024cores
http://sites.google.com/site/1024cores
Friday, January 7, 2011
Differential Reference Counting
Just published an article on Differential Reference Counting - reference counting algorithm which provides strong thread-safety and permits useful use cases that are not permitted by plain atomic reference counting (like boost::shared_ptr).
Wednesday, January 5, 2011
Lazy Concurrent Initialization
I've added an article on Lazy Concurrent Initialization. It describes 2 types of initialization - blocking and non-blocking, describes available implementations in Windows API, POSIX threads and C1x/C++0x and provides guidelines for efficient implementation based on atomic operations and fine-grained memory fences.
Tuesday, January 4, 2011
What new materials would you like to appear on 1024cores?
Hi!
I would like you to share you preferences regarding what kinds of information you would like to appear on 1024cores in the near future. You know, I need to kind of prioritize everything I may potentially share there, and your input is important to me.
I've started a poll on the right pane >>>
I have a lot of thoughts and ideas on lock-free algorithms: about queues and reader-writer problem, about object life-time management, lazy initialization, caching, etc
I may share more thought on scalable architecture: message-passing and pipelining, overloads, patterns, etc.
I may share thing related to parallel computations: some principles, caveats, problems and solutions, patterns and anti-patterns, etc.
Concurrency Myth Busters is going to be a section on common misconceptions around multicore, concurrency and parallelism.
I may highlight some hardware aspects like caches, NUMA and HyperThreading.
There are also Links, Libraries and Tools.
And if you check Other, please, drop a comment here regarding what exactly you mean.
Also don't hesitate to share here other thoughts, comments and suggestions on the site here.
Thank you.
I would like you to share you preferences regarding what kinds of information you would like to appear on 1024cores in the near future. You know, I need to kind of prioritize everything I may potentially share there, and your input is important to me.
I've started a poll on the right pane >>>
I have a lot of thoughts and ideas on lock-free algorithms: about queues and reader-writer problem, about object life-time management, lazy initialization, caching, etc
I may share more thought on scalable architecture: message-passing and pipelining, overloads, patterns, etc.
I may share thing related to parallel computations: some principles, caveats, problems and solutions, patterns and anti-patterns, etc.
Concurrency Myth Busters is going to be a section on common misconceptions around multicore, concurrency and parallelism.
I may highlight some hardware aspects like caches, NUMA and HyperThreading.
There are also Links, Libraries and Tools.
And if you check Other, please, drop a comment here regarding what exactly you mean.
Also don't hesitate to share here other thoughts, comments and suggestions on the site here.
Thank you.
Monday, January 3, 2011
Parallel Disk IO
I've added an article on Parallel Disk IO Subsystem:
http://www.1024cores.net/home/scalable-architecture/parallel-disk-io
It's based on my Wide Finder 2 entry, but it's quite general and describes common aspects and patterns and anti-patterns. It shows how not to under-subscribe nor over-subscribe CPUs and disks, how to keep data hot in caches and memory, how to automatically adapt to various external conditions, etc.
Here is also a brief write-up on the Wide Finder 2 entry itself:
http://www.1024cores.net/home/scalable-architecture/wide-finder-2
http://www.1024cores.net/home/scalable-architecture/parallel-disk-io
It's based on my Wide Finder 2 entry, but it's quite general and describes common aspects and patterns and anti-patterns. It shows how not to under-subscribe nor over-subscribe CPUs and disks, how to keep data hot in caches and memory, how to automatically adapt to various external conditions, etc.
Here is also a brief write-up on the Wide Finder 2 entry itself:
http://www.1024cores.net/home/scalable-architecture/wide-finder-2
Subscribe to:
Posts (Atom)