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>