http://gitweb.samba.org/?p=metze/samba/wip.git; a=shortlog; h=refs/heads/master4-double-fork
simo
simo at samba.org
Wed Oct 27 10:35:30 MDT 2010
On Wed, 2010-10-27 at 09:51 +0200, Stefan (metze) Metzmacher wrote:
> Hi,
>
> during the Storage Developer Conference 2010 I researched how we can
> implement helper processes in library code.
>
> The goal was to avoid setting global signal handlers and to avoid
> threads.
>
> The solution I found (with help from Tridge) was to use a 2 staged
> fork() in order to avoid generating SIGCHLD from the child.
> At the same time the child should never endup as zombie.
>
> My first implementation is available here:
> http://gitweb.samba.org/?p=metze/samba/wip.git;a=shortlog;h=refs/heads/master4-double-fork
>
> It passes our autobuild tests, but I want to do some more testing before
> pushing
> it to master.
>
> It would be nice to get some comments.
>
> The double_fork() function could be the basis for some really useful
> higher level
> async functions. We could use it to implement fully async wrappers for
> libraries
> like gssapi, cups and others, which have no native way to plug into our
> tevent library.
Very clever.
The only concern I have is that this will double the penalty for fork in
processes that have already allocated a bunch of memory and so have a
lot of pages to track per process.
But it looks we are using this to run pretty slow scripts anyway if I am
correct, so it looks like a good enough compromise.
Simo.
--
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Principal Software Engineer at Red Hat, Inc. <simo at redhat.com>
More information about the samba-technical
mailing list