[Scons-dev] Subprocess issue on Linux?
Gary Oberbrunner
garyo at oberbrunner.com
Tue Apr 1 12:13:38 EDT 2014
I've found posix spawn can be much faster than fork/exec with large memory
processes, so I'd be in favor of this. Not every system has it though so
there would have to be a fallback to fork/exec.
--
Gary Oberbrunner
(sent from my Android)
On Apr 1, 2014 11:52 AM, "Kenny, Jason L" <jason.l.kenny at intel.com> wrote:
>
>
> Hi guys,
>
>
>
> I just got a patch to Parts internal at Intel to fix some issues with
> subprocess. I find myself sort of surprised by this, and honestly felt that
> this seems to be an issue that should be looked at in Scons as well.
>
>
>
> The problem is this. We have been building a given huge product here at
> Intel on RHEL 4.8. IT is old and finally time has come to start moving to a
> newer system. What was found when we moved to a newer RHEL 5.10 ( I know
> bleeding edge J ) we found that the build was twice as slow. Looking into
> it more it was found that it was the use of fork() in subprocess. It was
> found that posix_spawn() fixed this. Attached is a monkey patch that is up
> for internal review to modify subprocess module a little to fix this for
> Unix based systems.
>
>
>
> Now I am not an expert on Linux internal details. However I thought fork()
> was the way process got spawned on Linux. Ie fork() was the win32
> CreateProcess(). I am clearly wrong, but this seems to be a problem I would
> not expect to have seen on Linux. The root of the problem seems to be that
> the system takes a long time to setup the fork when you have a large build
> ( and we have a very large build ) because of the memory usage (2-6GB)
> needed by SCons alone. Using a different method to create a process that
> does not try to "clone" memory seems to be the fix that gets the build
> times to be about ~2x+ faster.
>
>
>
> Does anyone else have input on this? IF this is a good patch, it seem that
> we will want to apply it to SCons, for a speed boost.
>
>
>
> Thanks
>
> Jason
>
>
>
>
>
> Also I attached a test file that to show fork() is the problem. You can
> see the difference importing the stubprocess.py file and running the test
> again.
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> http://two.pairlist.net/mailman/listinfo/scons-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/scons-dev/attachments/20140401/cbf14ba8/attachment.htm>
More information about the Scons-dev
mailing list