Software Transactional Memory?

Ed df at bsd.it
Wed Dec 28 02:14:17 PST 2005


Someone used a "transactions system" that is found in modern databases to 
handle SMP. Quoting:

on modern machines, locks have become a major source of memory contention and 
often limit program performance. Transaction systems are able to avoid the 
lock-bottleneck by using higher-performance concurrency techniques such as 
fine-grain revocable locks and optimistic concurrency control, which would be 
impractically difficult for programmers to use directly. We have now reached 
the stage where transactions are outperforming locks --- and people are 
starting to get interested.


We have produced a new algorithm for implementing object based Software 
Transactional Memory that we have found to significantly outperform the 
previous best performing algorithms. When run on our 106-processor test 
machine, our algorithm is almost five times as fast as the previous best 
known algorithm under high contention, almost twice as fast when using large 
data sets, and we have yet to find any situation in which another STM 
outperforms it. 

We achieve this by taking care to minimise cache contention and 
memory-bandwidth requirements. This leads us to make very different --- often 
counter-intuitive --- choices to other STMs, and allows our algorithm to 
cause very little additional cache contention overhead, relative to a 
non-transactional program. 

Furthermore, unlike some previous STM implementations, our algorithm is 
guaranteed to avoid livelock, deadlock, and starvation.



More info here:
http://www.cambridge.intel-research.net/~rennals/faststm.html

Paper here:
http://www.cambridge.intel-research.net/~rennals/notlockfree.pdf






More information about the Kernel mailing list