This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Scalability problem with Pthread Read/Write Locks
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Mon, 24 Oct 2005 15:40:40 +0200
- Subject: Re: Scalability problem with Pthread Read/Write Locks
- References: <20051023124539.21428.qmail@web32008.mail.mud.yahoo.com>
- Reply-to: cygwin at cygwin dot com
On Oct 23 05:45, Johan De Taeye wrote:
>
> My multi-threaded application is creating a lot of
> pthread_rwlock objects to protect access to my objects.
> I am noticing that this doesn't scale up well. As the number
> of active objects being created/changed/deleted increases
> into the thousands, the runtime performance degrades very
> badly.
>
> When investigating the problem I noticed from the source code
> in the files winsup/cygwin/thread.h and
> winsup/cygwin/thread.cc that a static double-linked list
> (called rwlocks) is used to keep track of all rwlocks present
> in the process. Removal of an element in the list is O(n) and
> explains the behavior of my application.
>
> When compiling under Linux no such scalability problems are
> found. (I believe the pthreads implementation there doesn't
> need to keep track of the active rwlocks)
>
> Finally the question: Could/should the =list= data structure
> be replaced with a =set= to provide better scalability?
Maybe, but http://cygwin.com/acronyms/#SHTDI. A patch which optimizes
cases like this are always thoughtfully considered. If you're willing
to help, have a look on http://cygwin.com/contrib.html. However, I'd
think we shouldn't change this for the upcoming 1.5.19 release which
already contains a lot more changes than we had in mind once.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/