This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Scalability problem with Pthread Read/Write Locks


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]