From: gs-cygwin.com@gluelogic.com
To: cygwin@cygwin.com
Cc: Bruno Haible <bruno@clisp.org>
Subject: Re: posix_spawn facility
Date: Wed, 10 May 2023 04:59:24 -0400 [thread overview]
Message-ID: <ZFtc7DoqRT04rlNc@xps13> (raw)
In-Reply-To: <ZEDmai2kO+dfxWut@xps13>
On Thu, Apr 20, 2023 at 03:14:59AM -0400, gs-cygwin.com@gluelogic.com wrote:
> On Mon, Apr 17, 2023 at 08:44:51PM +0200, Bruno Haible via Cygwin wrote:
> > Btw, there are two more functions in the posix_spawn family meanwhile:
> > * posix_spawn_file_actions_addchdir_np
> > implemented by glibc [1], musl libc, macOS, FreeBSD [2], Solaris ≥ 11.3
> > used by a few packages (Firefox, Chromium, Rust)
> > * posix_spawn_file_actions_addfchdir_np
> > implemented in glibc, musl libc
> > but not used by any package so far [3].
> >
> > The next POSIX will contain these functions (without the _np suffix).[4]
> >
> > Bruno
> >
> > [1] https://sourceware.org/bugzilla/show_bug.cgi?id=17405
> > [2] https://man.freebsd.org/cgi/man.cgi?query=posix_spawn_file_actions_adddup2&apropos=0&sektion=3&manpath=FreeBSD+11-current&format=html
> > [3] https://codesearch.debian.net/
> > [4] https://www.austingroupbugs.net/view.php?id=1208
>
> With regards to [3] above, the next lighttpd release (lighttpd 1.4.70)
> will use posix_spawn_file_actions_addfchdir_np(), where available, for
> spawning CGI programs.
>
> I have not yet tested under cygwin, but under Linux the overhead of
> initial CGI process creation can be greatly reduced by using
> posix_spawn() instead of fork(),execve(). The speedup is inversely
> proportional to how much work the target script performs (compared to
> the overhead of initial process creation). On x86_64 Linux, running a
> minimal C program for CGI can be ~60% faster in lighttpd when using
> posix_spawn()! When running a minimal /bin/sh program for CGI, the
> speedup is "only" ~20%! (Those numbers were obtained from running
> h2load and weighttp microbenchmarks with the minimal CGI programs.)
>
> minimal C program for CGI (compiled gcc -O3):
> #include <unistd.h>
> static const char resp[] = "Status: 200\n\n";
> int main(void) { write(STDOUT_FILENO, resp, sizeof(resp)-1); return 0; }
>
> minimal /bin/sh program for CGI:
> #!/bin/sh
> printf 'Status: 200\n\n'
>
> Cheers, Glenn
lighttpd 1.4.70 has been released for cygwin and uses posix_spawn() when
running CGI programs.
Under cygwin 3.4.0, posix_spawn_file_actions_addfchdir_np() is not
detected and so not used, but once cygwin 3.5.0 is out, I'll rebuild the
lighttpd package on cygwin to take advantage of it.
Cheers, Glenn
prev parent reply other threads:[~2023-05-10 8:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-16 11:46 Bruno Haible
2023-04-17 9:18 ` Corinna Vinschen
2023-04-17 18:44 ` Bruno Haible
2023-04-18 9:25 ` Corinna Vinschen
2023-04-18 20:49 ` Eric Blake
2023-04-18 21:00 ` Corinna Vinschen
2023-04-18 22:10 ` Bruno Haible
2023-04-19 2:39 ` Eric Blake
2023-04-19 8:19 ` Corinna Vinschen
2023-04-19 11:56 ` Bruno Haible
2023-04-20 6:52 ` Csaba Raduly
2023-07-31 18:58 ` Eric Blake
2023-07-31 19:12 ` Corinna Vinschen
2023-04-19 8:24 ` Corinna Vinschen
2023-04-19 11:24 ` posix_spawn_file_actions_add[f]chdir_np Bruno Haible
2023-04-19 15:05 ` posix_spawn_file_actions_add[f]chdir_np Corinna Vinschen
2023-04-19 19:13 ` posix_spawn_file_actions_add[f]chdir_np Corinna Vinschen
2023-04-19 21:33 ` posix_spawn_file_actions_add[f]chdir_np Eliot Moss
2023-04-20 10:27 ` posix_spawn_file_actions_add[f]chdir_np Bruno Haible
2023-04-19 10:48 ` posix_spawn facility Bruno Haible
2023-04-20 7:14 ` gs-cygwin.com
2023-04-20 8:35 ` Corinna Vinschen
2023-04-20 10:18 ` Bruno Haible
2023-04-20 14:21 ` Corinna Vinschen
2023-04-20 14:40 ` Corinna Vinschen
2023-04-20 14:58 ` Bruno Haible
2023-04-20 15:40 ` Corinna Vinschen
2023-04-20 18:46 ` gs-cygwin.com
2023-04-20 18:40 ` gs-cygwin.com
2023-04-20 19:31 ` Bruno Haible
2023-04-20 20:00 ` gs-cygwin.com
2023-05-10 9:15 ` gs-cygwin.com
2023-04-20 18:04 ` gs-cygwin.com
2023-05-10 8:59 ` gs-cygwin.com [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZFtc7DoqRT04rlNc@xps13 \
--to=gs-cygwin.com@gluelogic.com \
--cc=bruno@clisp.org \
--cc=cygwin@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).