Someday this patch might be interesting: diff -u RegistryCooker.pm~ RegistryCooker.pm --- RegistryCooker.pm~ 2022-08-30 11:10:19.790171019 -0400 +++ RegistryCooker.pm 2022-08-30 11:12:34.319572045 -0400 @@ -399,7 +399,8 @@ my $eval = join '', 'package ', $self->{PACKAGE}, ";", - "sub handler {", + "use base 'sealed';", + "sub handler :Sealed {", "local \$0 = '$script_name';", $nph, $shebang,
On Mon, Aug 29, 2022 at 2:21 PM Joe Schaefer <j...@sunstarsys.com> wrote: > 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> > > > -- Joe Schaefer, Ph.D. We only build what you need built. <j...@sunstarsys.com> 954.253.3732 <//954.253.3732>