Too Much Context Switching?

Kris Kennaway kris at FreeBSD.org
Mon Jun 30 17:53:05 UTC 2008


Michel Talon wrote:
> Kris Kennaway wrote:
> 
>> In 6.x. the default thread library is quite inefficient although it can 
>> make use of multiple CPUs (again, providing the application is giving 
>> them work to do).  For multi-threaded performance you will be better off 
>> switching to the libthr library (see libmap.conf(5)) or updating to 7.0 
>> (where it is the default).  This isn't likely to be the underlying issue 
>> if you are trying to debug a loss of performance relative to the same 
>> configuration in the past though.
> 
> Indeed Plone is written in python, and python has a "Big Giant Lock"
> inside which insures that only one thread can execute, in order to
> protect the python structures. This lock is only released under special
> circumstances, such as doing IO. Hence it is necessary to run several
> instances of python programs and do synchronization work, if one wants
> to make use of several CPUs, or use python threads, and immediately make 
> some IOs, or similar techniques. It may be that using Jython, if
> possible, yields better threading behavior. When doing some work
> according to these ideas, i had found quite severe contention, and this
> was not cured when switching native threading libraries (libksd, libthr,
> etc.). The problem is really inside python.

Yep, it could be that -- what confuses me though is that it is claimed 
that performance suddenly regressed.  If so then this cannot be the 
underlying cause.

Kris


More information about the freebsd-questions mailing list