- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Dmitry Vyukov wrote this:
"In order to a reader-writer mutex to scale reader's time under mutex
must
be significant, on the order of, let's say, 10'000 cycles. And the
more hardware
threads you have the longer the time must be. Otherwise,
inter-reader synchronization
overheads dominate, and the system does not scale."
Read here:
I have done some tests with my light weight MREW and my lockfree mpmc
fifo queue and what i think is that the CAS is generating a lot of
contention this is is why
my rwlock is not scaling.
What you are doing Dmitry Vyukovin in your distributed
rwlock is lowering the contention
using the same method as lock striping it is why it is scaling, but there
is still a possibility
of contention that can cause a problem to the scalability if you are not
setting the number
of rwlocks inside your distributed rwlock correctly.
other than that:
I have looked at the Distributed Reader-Writer Mutex by Dmitry Vyukov, look
at it here:"
http://www.1024cores.net/home/lock-free-algorithms/reader-writer-problem/distributed-reader-writer-mutex
and i think there is a problem with this method, cause look at the write
lock function:
int distr_rw_mutex_wrlock(distr_rw_mutex_t* mtx)
{
int i;
for (i = 0; i != mtx->proc_count; i += 1)
pthread_rwlock_wrlock(&mtx->cell.mtx);
return 0;
}
What is wrong with it ? suppose two or more writers want to lock this
distributed rwlock there is a possibility of a deadlock.
So i think you have to use a critical section around the for loop to be able
to lock all the rwlocks atomically to avoid the deadlock problem..
Thank you,
Amine Moulay Ramdane.
at it here:"
http://www.1024cores.net/home/lock-free-algorithms/reader-writer-problem/distributed-reader-writer-mutex
and i think there is a problem with this method, cause look at the write
lock function:
int distr_rw_mutex_wrlock(distr_rw_mutex_t* mtx)
{
int i;
for (i = 0; i != mtx->proc_count; i += 1)
pthread_rwlock_wrlock(&mtx->cell.mtx);
return 0;
}
What is wrong with it ? suppose two or more writers want to lock this
distributed rwlock there is a possibility of a deadlock.
So i think you have to use a critical section around the for loop to be able
to lock all the rwlocks atomically to avoid the deadlock problem..
Thank you,
Amine Moulay Ramdane.
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page