Forgive me for the pent up frustration of having our wonderful mod_perl
project being completely ignored and abandoned by the Perl Steering
Committee's frivolous lingustic interests over the years since the Parrot
announcement.
SaywerX gave us a reason to be hopeful again.  Let's see what they do with
it.

On Mon, Aug 29, 2022 at 1:34 PM Joe Schaefer <j...@sunstarsys.com> wrote:

> If the Perl steering committee had any brains left it would have
> capitalized on the perl 5.34 release and Co announced modperl2 ithread
> compatibility now available with Perl7’s new release.
>
> Instead they are going to kick the tires on the defaults for strictures
> and warnings until nobody cares any more.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 1:17:17 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> The only reason I’ve been vacillating about glibc/malloc thread safety is
> because I couldn’t fathom the fact that people still believed modperl isn’t
> compatible with mpm_event at this point in the Perl7 storyline.  The old
> segfaults of the past that happened in glibc malloc were because Perl was
> corrupting the heap in some other part of the codebase, and there’s no
> simple way to track it down without a tool like Valgrind, but we weren’t
> successful with that effort either.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 1:08:00 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> Religiously avoid setting up per request ithread environment variables.
> Just use PerlSetEnv in your Webserver config. Everything we did in modperl
> to support CGI scripts is a train wreck.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 1:04:03 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> Look into reducing the scope of your interpreters down from the request
> level to the handler level.  If all you are doing is running registry
> scripts, you will get even better scaling out of just a few ithreads per
> worker process.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 12:57:14 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> The only impact to your work with modperl is that you will need to assess
> the ithread-safety of your dependent XS-based modules.  For example, use a
> JSON::XS thread safe alternative- there are several.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 12:49:22 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> There is a mountain of awful advice floating around about ithreads,
> including pretty much everything going on in Raku around adopting the
> node.js model instead. It is safe to ignore all that now that SawyerX spit
> polished all of the perl5 internals.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Monday, August 29, 2022 12:40:43 PM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> Many of the performance hacks we’ve encouraged over the years, eg around
> HTTPD’s lingering close effect, are obsoleted with ithreads.  Unless you
> send flush buckets down the output filter stack yourself, the “response
> handler” phase exits long before the “connection handler” starts making non
> blocking socket system calls.  So you need an order of magnitude fewer
> ithreads than you do prefork children in a multitier arch.
>
> Get Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------
> *From:* Joe Schaefer <j...@sunstarsys.com>
> *Sent:* Sunday, August 28, 2022 11:09:14 AM
> *To:* mod_perl list <modperl@perl.apache.org>
> *Subject:* Re: sealed.pm v4.0.0 is out
>
> Benchmark ran on my 2021 Dell Precision Laptop w/  8 cores + HT (so
> 16vCPU) and Ubuntu 22.04 inside WSL2.  Never topped 50% avg CPU, and almost
> all of the CPU was in userland (not system calls).
>
> On Sat, Aug 27, 2022 at 11:42 AM <j...@sunstarsys.com> wrote:
>
> See https://sunstarsys.com/essays/perl7-sealed-lexicals.  For the full
> effect, you will need to build B::Generate with this patched version
> instead: https://github.com/SunStarSys/cms/blob/master/Generate.xs
>
>
>
> Sample mod_perl config + benchmarks:
>
>
>
> <IfModule mpm_event_module>
>
>         StartServers                     2
>
>         MinSpareThreads                100
>
>         MaxSpareThreads                500
>
>         ThreadLimit                   1000
>
>         ThreadsPerChild                100
>
>         MaxRequestWorkers          1000000
>
>         MaxConnectionsPerChild           0
>
> </IfModule>
>
>
>
> <IfModule mod_perl.c>
>
>   PerlSwitches -T -I/home/joesuf4/src/cms/lib
>
>   PerlInterpStart 2
>
>   PerlInterpMax 4
>
>   PerlInterpMinSpare 1
>
>   PerlInterpMaxSpare 4
>
>   PerlInterpMaxRequests 1000000
>
>   PerlOptions +GlobalRequest
>
>
>
>   <Directory /home/joesuf4/src/cms>
>
>     Require all granted
>
>     AddHandler perl-script .pl
>
>     PerlResponseHandler ModPerl::Registry
>
>     Options +ExecCGI
>
>   </Directory>
>
>
>
>   <Directory /home/joesuf4/src/trunk/content>
>
>     Require all granted
>
>   </Directory>
>
>
>
>   <VirtualHost *:80>
>
>     ServerName localhost
>
>     DocumentRoot /home/joesuf4/src/trunk/content
>
>     Alias /perl-script /home/joesuf4/src/cms
>
>   </VirtualHost>
>
>
>
> </IfModule>
>
>
>
>
>
> ab -n 10000 -c 1000 http://localhost/perl-script/enquiry.pl
>
> This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
>
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
>
>
> Benchmarking localhost (be patient)
>
> Completed 1000 requests
>
> Completed 2000 requests
>
> Completed 3000 requests
>
> Completed 4000 requests
>
> Completed 5000 requests
>
> Completed 6000 requests
>
> Completed 7000 requests
>
> Completed 8000 requests
>
> Completed 9000 requests
>
> Completed 10000 requests
>
> Finished 10000 requests
>
>
>
>
>
> Server Software:        Apache/2.4.52
>
> Server Hostname:        localhost
>
> Server Port:            80
>
>
>
> Document Path:          /perl-script/enquiry.pl
>
> Document Length:        1329 bytes
>
>
>
> Concurrency Level:      1000
>
> Time taken for tests:   1.218 seconds
>
> Complete requests:      10000
>
> Failed requests:        0
>
> Total transferred:      15010000 bytes
>
> HTML transferred:       13290000 bytes
>
> Requests per second:    8207.94 [#/sec] (mean)
>
> Time per request:       121.833 [ms] (mean)
>
> Time per request:       0.122 [ms] (mean, across all concurrent requests)
>
> Transfer rate:          12031.37 [Kbytes/sec] received
>
>
>
> Connection Times (ms)
>
>               min  mean[+/-sd] median   max
>
> Connect:        0    2   6.2      0      24
>
> Processing:     4   93  49.6     82     458
>
> Waiting:        1   80  44.5     71     455
>
> Total:         17   95  49.5     84     458
>
>
>
> Percentage of the requests served within a certain time (ms)
>
>   50%     84
>
>   66%    100
>
>   75%    112
>
>   80%    120
>
>   90%    147
>
>   95%    173
>
>   98%    233
>
>   99%    318
>
> 100%    458 (longest request)
>
>
>
> % pgrep -f apache2 | xargs -n1 ps -uwww
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> root      442827  0.0  0.1  18180 14244 ?        Ss   11:27   0:00
> /usr/sbin/apache2 -k start
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> www-data  446387  1.7  1.5 7549352 129692 ?      Sl   11:28   0:12
> /usr/sbin/apache2 -k start
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> www-data  451006 15.2  1.5 7483708 128468 ?      Sl   11:39   0:10
> /usr/sbin/apache2 -k start
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> www-data  451317 11.7  1.4 7483772 119836 ?      Sl   11:39   0:07
> /usr/sbin/apache2 -k start
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> www-data  451629  6.4  1.3 7483804 113012 ?      Sl   11:39   0:03
> /usr/sbin/apache2 -k start
>
> USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>
> www-data  451929  1.1  1.4 7483816 116668 ?      Sl   11:39   0:00
> /usr/sbin/apache2 -k start
>
>
>
> --
> Joe Schaefer, Ph.D.
> We only build what you need built.
> <j...@sunstarsys.com>
> 954.253.3732 <//954.253.3732>
>
>
>

-- 
Joe Schaefer, Ph.D.
We only build what you need built.
<j...@sunstarsys.com>
954.253.3732 <//954.253.3732>

Reply via email to