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>

Reply via email to