Performance issue

Jonathan Noack noackjr at alumni.rice.edu
Mon May 9 20:38:43 PDT 2005


On 05/09/05 18:47, Daniel Eischen wrote:
> On Mon, 9 May 2005, Daniel Eischen wrote:
>>On Mon, 9 May 2005, Suleiman Souhlal wrote:
>>>I think I've found the problem: Python uses setjmp/longjmp to protect
>>>against SIGFPU every time it does floating point operations. The
>>>python script does not actually use threads, and libpthread assumes
>>>non-threaded processes are system scope. So, it would end up using
>>>the sigprocmask syscall, even though it doesn't really need to.
>>>The diff at http://people.freebsd.org/~ssouhlal/testing/
>>>thr_sigmask-20050509.diff fixes this, by making sure the process is
>>>threaded, before using the syscall.
> 
> [ ... ]
> 
>>If the process wasn't linked to libpthread, then the longjmp()
>>and setjmp() would still be calling the syscall, so it isn't
>>the syscall itself that is making things slower.  You'll notice
>>that there are two calls to __sys_sigprocmask() in the section
>>of code you have patched.  You could eliminate the second call
>>if you do some of what the remainder of the function does instead
>>of returning early (the locks aren't needed and pending signals
>>don't need to be run down).
> 
> As in something like this:
> 
>   http://people.freebsd.org/~deischen/kse/thr_sigmask.c.diffs
> 
> It has not been tested.

When I tried to test this every threaded program died with sig 11.  Does 
this require me to recompile the program before it will work?

-- 
Jonathan Noack | noackjr at alumni.rice.edu | OpenPGP: 0x991D8195
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 187 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20050509/095d93ed/signature.bin


More information about the freebsd-stable mailing list