[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl
Subject:    Re: sealed.pm v4.0.0 is out
From:       Joe Schaefer <joe () sunstarsys ! com>
Date:       2022-09-01 0:21:24
Message-ID: CAFQGv+ZZqptb+hTfXaS8-EFh0W1xdBWLeRcN6G4POzjFEGXJFw () mail ! gmail ! com
[Download RAW message or body]

What I'm saying is that this isn't foolproof, but really neither is doing
mod_perl + ithreads without sealed.pm.  A bad tune will blow up under
pressure,
so be careful out there in the brave new world of single-tiered
webstacks using mod_perl and mpm_event plus mod_http2.

On Wed, Aug 31, 2022 at 8:11 PM Joe Schaefer <joe@sunstarsys.com> wrote:

> 4.0.1 is going to trap everything bizarre that occurs within the tweak()
> subroutine, and gracefully bail out.
> The only thing this needs your help with is to avoid putting heavy ithread
> pressure on mod_perl during interpreter
> destruction.  One simple approach is to make sure your modperl interpreter
> settings never destroy ithreads-
> leave that for httpd during graceful restart.
>
>
> On Wed, Aug 31, 2022 at 7:41 PM Joe Schaefer <joe@sunstarsys.com> wrote:
>
>> To throw mod_apreq2 into the benchmarking mix, add items to the query
>> string you are hitting (on enquiry.pl).
>> In particular, lang=.{en,es,de,fr} will generate UTF-8 European-language
>> localized output.
>>
>> On Wed, Aug 31, 2022 at 7:13 PM Joe Schaefer <joe@sunstarsys.com> wrote:
>>
>>> I went ahead and copied my company templates over to the github cms
>>> repo, so you can run enquiry.pl yourself
>>> (once you edit the @TEMPLATE_DIRS path to point at your checkout).  You
>>> will see sealed.pm at work in the
>>> httpd error logs.
>>>
>>> On Wed, Aug 31, 2022 at 1:02 PM Joe Schaefer <joe@sunstarsys.com> wrote:
>>>
>>>> For my part in this story, v4.0.0 is the end of the line.  This release
>>>> solves every business problem my own company
>>>> had with prior releases, so I'm satisfied with where it lies.
>>>>
>>>> But it is not perfect by any stretch. To take it to the level where it
>>>> needs to be someday, B::Generate's maintainers need to be reliable
>>>> partners with the future maintainers of sealed.pm, to deal with
>>>> whatever long-range support issues crop up as perlguts invariably
>>>> undergoes changes that break the undocumented assumptions I've made in
>>>> getting this into workable condition.
>>>>
>>>> What do you think about the idea of putting sealed.pm into the modperl
>>>> project, vs. a stand-alone on CPAN?
>>>>
>>>> On Wed, Aug 31, 2022 at 10:53 AM Joe Schaefer <joe@sunstarsys.com>
>>>> wrote:
>>>>
>>>>> In the end, the surgery we do (to method_named), is to replace the
>>>>> prior $op's next() pointer to point at the $gv op we copied from
>>>>> a known subroutine's op-tree (that uses a typical subroutine call
>>>>> instead of a method lookup).  Since we relocated that next() pointer,
>>>>> we need to decrement the internal refcnt for the method_named op to
>>>>> avoid leaks/segfaults during garbage collection of the ithread.
>>>>>
>>>>> None of the many issues Doug faced back in 2000 to do this on a more
>>>>> generic level actually need to be done for this implementation.
>>>>> You just need to know that any code that tries to walk this tree (eg
>>>>> B::Deparse) post-tweaks may choke on the zombie method_named
>>>>> op lying around in one of the sibling() linked lists.  That probably
>>>>> includes the ithread-cloniing mechanism itself, so only use :sealed
>>>>> post ithread construction, not prior to it.
>>>>>
>>>>> On Wed, Aug 31, 2022 at 10:27 AM Joe Schaefer <joe@sunstarsys.com>
>>>>> wrote:
>>>>>
>>>>>> The :sealed attribute is a statement about a class's @ISA: you are
>>>>>> saying you are using its compile-time setting.
>>>>>> And because we invoke $class->can to do the lookup, module authors
>>>>>> who override UNIVERSAL::can() with a customized
>>>>>> one can support AUTOLOADed methods themselves.
>>>>>>
>>>>>> Under :sealed, you control which lexical object references you want
>>>>>> to use compile-time method lookups (via can()),
>>>>>> by declaring them with a class (type), or avoiding doing that in the
>>>>>> lexical's declaration.  It only impacts your subroutine
>>>>>> definitions that declare :sealed and a typed lexicals, not any other
>>>>>> module's code elsewhere.
>>>>>>
>>>>>> You absolutely *can* use sealed.pm outside mod_perl, but you need to
>>>>>> be wary about using typed lexicals on your method
>>>>>> argument stack, because end-users may pass properly derived objects
>>>>>> to your method, and will expect your module to use
>>>>>> the derived-class's overrides of any method calls in your codebase.
>>>>>> Basically the law of the land is that consumers of an API
>>>>>> expect all method calls to operate the way *virtual* method calls
>>>>>> work in Java/C++.  However, what you do internally with API's
>>>>>> outside of your published API's argument stack is fair game for
>>>>>> :sealed.  My advice that it's only practical to seal XS method calls
>>>>>> remains.
>>>>>>
>>>>>> On Wed, Aug 31, 2022 at 9:52 AM Joe Schaefer <joe@sunstarsys.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Submitted a Pull Request for the Generate.xs patch:
>>>>>>> https://github.com/rurban/b-generate/pull/2
>>>>>>> Added more comments to sealed.pm to explain the rationale behind
>>>>>>> the # replace $methop logic,
>>>>>>> since it differs from what Doug did back in 2000.
>>>>>>>
>>>>>>> On Tue, Aug 30, 2022 at 2:52 PM Joe Schaefer <joe@sunstarsys.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Take a walk down history lane with me here:
>>>>>>>> https://www.perl.com/pub/2000/06/dougpatch.html/
>>>>>>>>
>>>>>>>> Like ithreads, the idea was sparked from Gurusamy's genius, coded
>>>>>>>> up by Doug, and largely forgotten by p5p politics.
>>>>>>>> It's not that it couldn't be done, they arrived at the place where
>>>>>>>> it *shouldn't* be done, which was deflating for mod_perl fans.
>>>>>>>> Simon Couzens made a lot of inroads since, with modularized Perl
>>>>>>>> compilers and B::Generate, but it wasn't until
>>>>>>>> Perl7 that I was motivated to try any way forward, on a more
>>>>>>>> limited, controllable scale.
>>>>>>>>
>>>>>>>> What do you think?  How should this piece of the mod_perl puzzle
>>>>>>>> fit in to the CPAN universe?
>>>>>>>>
>>>>>>>> On Tue, Aug 30, 2022 at 2:12 PM Joe Schaefer <joe@sunstarsys.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Every method call that's implemented in XS is looked-up at
>>>>>>>>> compile-time in that script, even for class methods.
>>>>>>>>> That's the sweet spot for :sealed.  The only other things I do
>>>>>>>>> with it are a few hot methods in Dotiac::DTL::Core, but that's probably not
>>>>>>>>> worth the bother.
>>>>>>>>>
>>>>>>>>> On Tue, Aug 30, 2022 at 1:14 PM Joe Schaefer <joe@sunstarsys.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Just look through my commit history on this sample Registry
>>>>>>>>>> script to see what's involved in getting sealed activated on your scripts.
>>>>>>>>>>
>>>>>>>>>> https://github.com/SunStarSys/cms/blob/master/enquiry.pl
>>>>>>>>>>
>>>>>>>>>> On Tue, Aug 30, 2022 at 1:12 PM Joe Schaefer <joe@sunstarsys.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> It'd be pretty harmless to apply the RegistryCooker.pm patch
>>>>>>>>>>> once we find a home for sealed.pm (either in this project or as
>>>>>>>>>>> a stand-alone pragma on CPAN).
>>>>>>>>>>> Nothing will segfault without consciously using types on your
>>>>>>>>>>> lexical object reference declarations; otherwise it's a giant noop.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Aug 30, 2022 at 12:53 PM Joe Schaefer <
>>>>>>>>>>> joe@sunstarsys.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> If you really beat the hell out of it thread-wise, sealed.pm
>>>>>>>>>>>> v4.0.0 will still segfault, but there's not much more I can do with the
>>>>>>>>>>>> code at this point to prevent that.
>>>>>>>>>>>> B::Generate doesn't really support what I'm doing here, which
>>>>>>>>>>>> is to do surgery on an existing op-tree, instead of just playing around
>>>>>>>>>>>> with a user-generated one.
>>>>>>>>>>>> There's no good way to remove the target "method_named" op that
>>>>>>>>>>>> we're replacing with a gv_op.  If that can't be supported using B::OP APIs,
>>>>>>>>>>>> then it should
>>>>>>>>>>>> be handled from perl itself.  The problem is that the politics
>>>>>>>>>>>> around the feature were never resolved, because nobody wants to change the
>>>>>>>>>>>> default "virtual method"
>>>>>>>>>>>> behavior of Perl's OO-runtime-lookups.  Now with the new
>>>>>>>>>>>> :sealed SUBROUTINE ATTRIBUTE, it's only enabled for people (like us) who
>>>>>>>>>>>> want it conditionally applied,
>>>>>>>>>>>> just like we do for the :method attribute.
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Aug 30, 2022 at 11:26 AM Joe Schaefer <
>>>>>>>>>>>> joe@sunstarsys.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> 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 <
>>>>>>>>>>>>> joe@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 <
>>>>>>>>>>>>>> joe@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 <joe@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 <joe@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 <joe@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 <joe@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 <joe@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 <joe@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 <joe@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 <joe@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.
>>>>>>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>>>>>>> We only build what you need built.
>>>>>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>>>>>> We only build what you need built.
>>>>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>>>>> We only build what you need built.
>>>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>>>> We only build what you need built.
>>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>>> We only build what you need built.
>>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>>> We only build what you need built.
>>>>>>>>> <joe@sunstarsys.com>
>>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Joe Schaefer, Ph.D.
>>>>>>>> We only build what you need built.
>>>>>>>> <joe@sunstarsys.com>
>>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Joe Schaefer, Ph.D.
>>>>>>> We only build what you need built.
>>>>>>> <joe@sunstarsys.com>
>>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Joe Schaefer, Ph.D.
>>>>>> We only build what you need built.
>>>>>> <joe@sunstarsys.com>
>>>>>> 954.253.3732 <//954.253.3732>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Joe Schaefer, Ph.D.
>>>>> We only build what you need built.
>>>>> <joe@sunstarsys.com>
>>>>> 954.253.3732 <//954.253.3732>
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> Joe Schaefer, Ph.D.
>>>> We only build what you need built.
>>>> <joe@sunstarsys.com>
>>>> 954.253.3732 <//954.253.3732>
>>>>
>>>>
>>>>
>>>
>>> --
>>> Joe Schaefer, Ph.D.
>>> We only build what you need built.
>>> <joe@sunstarsys.com>
>>> 954.253.3732 <//954.253.3732>
>>>
>>>
>>>
>>
>> --
>> Joe Schaefer, Ph.D.
>> We only build what you need built.
>> <joe@sunstarsys.com>
>> 954.253.3732 <//954.253.3732>
>>
>>
>>
>
> --
> Joe Schaefer, Ph.D.
> We only build what you need built.
> <joe@sunstarsys.com>
> 954.253.3732 <//954.253.3732>
>
>
>

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

[Attachment #3 (text/html)]

<div dir="ltr">What I&#39;m saying is that this isn&#39;t foolproof, but really \
neither is doing mod_perl  + ithreads without <a \
href="http://sealed.pm">sealed.pm</a>.   A bad tune will blow up under \
pressure,<div>so be careful out there in the brave new world of single-tiered \
webstacks  using mod_perl and mpm_event plus mod_http2.</div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 31, 2022 at 8:11 PM \
Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">4.0.1 \
is going to trap everything bizarre that occurs within the tweak() subroutine, and \
gracefully bail out.<div>The only thing this needs your help with is to avoid putting \
heavy ithread pressure on mod_perl during  interpreter</div><div>destruction.   One \
simple approach is to make sure your modperl interpreter settings never destroy \
ithreads-</div><div>leave that for httpd during graceful \
restart.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Wed, Aug 31, 2022 at 7:41 PM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">To \
throw mod_apreq2 into the benchmarking mix, add items to the query string you are \
hitting (on <a href="http://enquiry.pl" target="_blank">enquiry.pl</a>).<div>In \
particular, lang=.{en,es,de,fr} will generate UTF-8 European-language localized \
output.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On \
Wed, Aug 31, 2022 at 7:13 PM Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">I went ahead and copied my company \
templates over to the github cms repo, so you can run <a href="http://enquiry.pl" \
target="_blank">enquiry.pl</a> yourself<div>(once you edit the @TEMPLATE_DIRS path to \
point at your checkout).   You will see <a href="http://sealed.pm" \
target="_blank">sealed.pm</a> at work in the</div><div>httpd error \
logs.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On \
Wed, Aug 31, 2022 at 1:02 PM Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">For my part in this story, v4.0.0 \
is the end of the line.   This release solves every business problem my own \
company<div>had with prior releases, so I&#39;m satisfied with where it \
lies.</div><div><br></div><div>But it is not perfect by any stretch. To take it to \
the level where it needs to be someday, B::Generate&#39;s maintainers need to be \
reliable</div><div>partners with the future maintainers of <a href="http://sealed.pm" \
target="_blank">sealed.pm</a>, to deal with whatever long-range support issues crop \
up as perlguts invariably</div><div>undergoes changes that break the undocumented \
assumptions I&#39;ve made in getting this into workable \
condition.</div><div><br></div><div>What do you think about the idea of putting <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> into the modperl project, vs. a \
stand-alone on CPAN?</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Wed, Aug 31, 2022 at 10:53 AM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">In the \
end, the surgery we do (to method_named), is to replace the prior $op&#39;s next() \
pointer to point at the $gv op we copied from<div>a known subroutine&#39;s  op-tree \
(that uses a typical subroutine call instead of a method lookup).   Since we \
relocated that next() pointer,</div><div>we need to decrement the internal refcnt for \
the method_named op to avoid leaks/segfaults during garbage collection of the \
ithread.</div><div><br></div><div>None of the many issues Doug faced back in 2000 to \
do this on a more generic level actually need to be done for this \
implementation.</div><div>You just need to know that any code that tries to walk this \
tree (eg B::Deparse) post-tweaks may choke on the zombie method_named</div><div>op \
lying around in one of the sibling() linked  lists.   That probably includes the \
ithread-cloniing  mechanism itself, so only use :sealed</div><div>post ithread \
construction, not prior to it.</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Wed, Aug 31, 2022 at 10:27 AM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">The \
:sealed attribute is a statement about a class&#39;s @ISA: you are saying you are \
using its compile-time setting.<div>And because we invoke $class-&gt;can to do the \
lookup, module authors who override UNIVERSAL::can() with a customized</div><div>one \
can support AUTOLOADed methods themselves.</div><div><br></div><div>Under :sealed, \
you control which lexical object references you want to use compile-time method \
lookups (via can()),</div><div>by declaring  them with a class (type), or avoiding \
doing that in the lexical&#39;s declaration.   It only impacts your \
subroutine</div><div>definitions that  declare :sealed and a typed lexicals, not any \
other module&#39;s code elsewhere.</div><div><br></div><div>You absolutely *can* use \
<a href="http://sealed.pm" target="_blank">sealed.pm</a> outside mod_perl, but  you \
need to be wary about using typed lexicals on your method</div><div>argument stack, \
because end-users may pass properly derived objects to your method, and will expect \
your module to use</div><div>the derived-class&#39;s overrides of any method calls in \
your codebase.   Basically the law of the land is that consumers of an \
API</div><div>expect all method calls to operate the way *virtual* method calls work \
in Java/C++.   However, what you do internally with API&#39;s</div><div>outside of \
your published API&#39;s argument stack is fair game for :sealed.   My advice that \
it&#39;s only practical to seal XS method calls remains.</div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 31, 2022 at 9:52 AM \
Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">Submitted a Pull Request for the \
Generate.xs patch:  <a href="https://github.com/rurban/b-generate/pull/2" \
target="_blank">https://github.com/rurban/b-generate/pull/2</a><div>Added more \
comments to <a href="http://sealed.pm" target="_blank">sealed.pm</a> to explain the \
rationale behind the # replace $methop logic,</div><div>since it differs from what \
Doug did back in 2000.</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Tue, Aug 30, 2022 at 2:52 PM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Take a \
walk down history lane with me here:  <a \
href="https://www.perl.com/pub/2000/06/dougpatch.html/" \
target="_blank">https://www.perl.com/pub/2000/06/dougpatch.html/</a><div><br></div><div>Like \
ithreads, the idea was sparked from Gurusamy&#39;s genius, coded up by Doug, and \
largely forgotten by p5p politics.</div><div>It&#39;s not that it couldn&#39;t be \
done, they arrived at the place where it *shouldn&#39;t* be done, which was deflating \
for mod_perl fans.</div><div>Simon Couzens made a lot of inroads since, with \
modularized Perl compilers and B::Generate, but it wasn&#39;t until</div><div>Perl7 \
that I was motivated to try any way forward, on a more limited, controllable \
scale.</div><div><br></div><div>What do you think?   How should this piece of the \
mod_perl puzzle fit in to the CPAN universe?</div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 30, 2022 at 2:12 PM \
Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">Every method call that&#39;s \
implemented  in XS is looked-up at compile-time in that script, even for class \
methods.<div>That&#39;s the  sweet spot for :sealed.   The only other things I do \
with it are a few hot methods in Dotiac::DTL::Core, but that&#39;s probably not worth \
the bother.</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Tue, Aug 30, 2022 at 1:14 PM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Just \
look through my commit history on this sample Registry script to see what&#39;s \
involved in getting sealed activated on your scripts.<div><br></div><div><a \
href="https://github.com/SunStarSys/cms/blob/master/enquiry.pl" \
target="_blank">https://github.com/SunStarSys/cms/blob/master/enquiry.pl</a></div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 30, 2022 at 1:12 PM \
Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">It&#39;d be pretty harmless to \
apply the RegistryCooker.pm patch once we find a home for <a href="http://sealed.pm" \
target="_blank">sealed.pm</a> (either in this project or as a stand-alone pragma on \
CPAN).<div>Nothing will segfault without consciously using types on your lexical \
object reference declarations; otherwise it&#39;s a giant noop.</div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 30, 2022 at 12:53 \
PM Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">If you really beat the hell out of \
it thread-wise, <a href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 will \
still segfault, but there&#39;s not much more I can do with the code at this point to \
prevent that.<div>B::Generate doesn&#39;t really support what I&#39;m doing here, \
which is to do surgery on an existing op-tree, instead of just playing around with a \
user-generated one.</div><div>There&#39;s no good way to remove the target \
&quot;method_named&quot; op that we&#39;re replacing with a gv_op.   If that \
can&#39;t be supported using B::OP APIs, then it should</div><div>be handled from \
perl itself.   The problem is that the politics around the feature were never \
resolved, because nobody wants to change the default &quot;virtual \
method&quot;</div><div>behavior of Perl&#39;s OO-runtime-lookups.   Now with the new \
:sealed SUBROUTINE ATTRIBUTE, it&#39;s only enabled for people (like us) who want it \
conditionally applied,</div><div>just like we do for the :method attribute.  \
</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, \
Aug 30, 2022 at 11:26 AM Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">Someday this patch might be \
interesting:<div><br></div><div>  diff -u RegistryCooker.pm~ RegistryCooker.pm<br>--- \
RegistryCooker.pm~   2022-08-30 11:10:19.790171019 -0400<br>+++ RegistryCooker.pm    \
2022-08-30 11:12:34.319572045 -0400<br>@@ -399,7 +399,8 @@<br>        my $eval = join \
&#39;&#39;,<br>                                &#39;package &#39;,<br>                \
$self-&gt;{PACKAGE}, &quot;;&quot;,<br>-                              &quot;sub \
handler {&quot;,<br>+                              &quot;use base \
&#39;sealed&#39;;&quot;,<br>+                              &quot;sub handler :Sealed \
{&quot;,<br>                                &quot;local \$0 = \
&#39;$script_name&#39;;&quot;,<br>                                $nph,<br>           \
$shebang,<br></div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Mon, Aug 29, 2022 at 2:21 PM Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Forgive \
me for the pent up frustration of having our wonderful mod_perl project being \
completely ignored and abandoned by the Perl Steering Committee&#39;s frivolous \
lingustic  interests over the years since the Parrot announcement.<div>SaywerX gave  \
us a reason to be hopeful again.   Let&#39;s see what they do with \
it.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, \
Aug 29, 2022 at 1:34 PM Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex">



<div>
<div>
<div>
<div dir="ltr">
<div dir="ltr">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.</div> <div dir="ltr"><br>
</div>
<div dir="ltr">Instead they are going to kick the tires on the defaults for \
strictures and warnings until nobody cares any more.</div> </div>
</div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242ms-outlook-mobile-signature">
 <div><br>
</div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" \
color="#000000"><b>From:</b> Joe Schaefer &lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;<br> <b>Sent:</b> Monday, August 29, 2022 \
1:17:17 PM<br> <b>To:</b> mod_perl list &lt;<a href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_ms-outlook-mobile-signature">
 <div><br>
</div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Monday, August 29, 2022 1:08:00 PM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_ms-outlook-mobile-signature">
 <div><br>
</div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Monday, August 29, 2022 1:04:03 PM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_x_ms-outlook-mobile-signature">
 <div><br>
</div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Monday, August 29, 2022 12:57:14 PM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-292 \
1381589789482744gmail-m_-2814038335180218242x_x_x_x_ms-outlook-mobile-signature"> \
<div><br> </div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_x_x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Monday, August 29, 2022 12:49:22 PM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-292 \
1381589789482744gmail-m_-2814038335180218242x_x_x_x_x_ms-outlook-mobile-signature"> \
<div><br> </div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_x_x_x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Monday, August 29, 2022 12:40:43 PM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div>
<div>
<div dir="ltr">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.</div> </div>
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-292 \
1381589789482744gmail-m_-2814038335180218242x_x_x_x_x_x_ms-outlook-mobile-signature"> \
<div><br> </div>
Get <a href="https://aka.ms/o0ukef" target="_blank">Outlook for iOS</a></div>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_163632199726260729m_7606201733930101592m_-7360814470164559164m_438288800624 \
0227425m_8738348713209460465gmail-m_2267797836589611912gmail-m_7310642781036269353gmai \
l-m_5670198881453990579gmail-m_6001127410151920769gmail-m_-3094194652935637753gmail-m_ \
1995774051193394609gmail-m_-3201102122527071321gmail-m_3194131054547777890gmail-m_-2921381589789482744gmail-m_-2814038335180218242x_x_x_x_x_x_divRplyFwdMsg" \
dir="ltr"><font face="Calibri, sans-serif" color="#000000" \
style="font-size:11pt"><b>From:</b> Joe Schaefer &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt;<br> \
<b>Sent:</b> Sunday, August 28, 2022 11:09:14 AM<br> <b>To:</b> mod_perl list &lt;<a \
href="mailto:modperl@perl.apache.org" \
target="_blank">modperl@perl.apache.org</a>&gt;<br> <b>Subject:</b> Re: <a \
href="http://sealed.pm" target="_blank">sealed.pm</a> v4.0.0 is out</font> <div>  \
</div> </div>
<div>
<div dir="ltr">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).</div> <br>
<div>
<div dir="ltr">On Sat, Aug 27, 2022 at 11:42 AM &lt;<a \
href="mailto:joe@sunstarsys.com" target="_blank">joe@sunstarsys.com</a>&gt; \
wrote:<br> </div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"> <div>
<div lang="EN-US">
<div>
<p>See <a href="https://sunstarsys.com/essays/perl7-sealed-lexicals" target="_blank">
https://sunstarsys.com/essays/perl7-sealed-lexicals</a>.   For the full effect, you \
will need to build B::Generate with this patched version instead: <a \
href="https://github.com/SunStarSys/cms/blob/master/Generate.xs" target="_blank"> \
https://github.com/SunStarSys/cms/blob/master/Generate.xs</a><u></u><u></u></p> \
<p><u></u>  <u></u></p> <p>Sample mod_perl config + benchmarks:<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>&lt;IfModule mpm_event_module&gt;<u></u><u></u></p>
<p>               StartServers                                         \
2<u></u><u></u></p> <p>               MinSpareThreads                               \
100<u></u><u></u></p> <p>               MaxSpareThreads                               \
500<u></u><u></u></p> <p>               ThreadLimit                                   \
1000<u></u><u></u></p> <p>               ThreadsPerChild                              \
100<u></u><u></u></p> <p>               MaxRequestWorkers                   \
1000000<u></u><u></u></p> <p>               MaxConnectionsPerChild                    \
0<u></u><u></u></p> <p>&lt;/IfModule&gt;<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>&lt;IfModule mod_perl.c&gt;<u></u><u></u></p>
<p>   PerlSwitches -T -I/home/joesuf4/src/cms/lib<u></u><u></u></p>
<p>   PerlInterpStart 2<u></u><u></u></p>
<p>   PerlInterpMax 4<u></u><u></u></p>
<p>   PerlInterpMinSpare 1<u></u><u></u></p>
<p>   PerlInterpMaxSpare 4<u></u><u></u></p>
<p>   PerlInterpMaxRequests 1000000<u></u><u></u></p>
<p>   PerlOptions +GlobalRequest<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>   &lt;Directory /home/joesuf4/src/cms&gt;<u></u><u></u></p>
<p>       Require all granted<u></u><u></u></p>
<p>       AddHandler perl-script .pl<u></u><u></u></p>
<p>       PerlResponseHandler ModPerl::Registry<u></u><u></u></p>
<p>       Options +ExecCGI<u></u><u></u></p>
<p>   &lt;/Directory&gt;<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>   &lt;Directory /home/joesuf4/src/trunk/content&gt;<u></u><u></u></p>
<p>       Require all granted<u></u><u></u></p>
<p>   &lt;/Directory&gt;<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>   &lt;VirtualHost *:80&gt;<u></u><u></u></p>
<p>       ServerName localhost<u></u><u></u></p>
<p>       DocumentRoot /home/joesuf4/src/trunk/content<u></u><u></u></p>
<p>       Alias /perl-script /home/joesuf4/src/cms<u></u><u></u></p>
<p>   &lt;/VirtualHost&gt;<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>&lt;/IfModule&gt;<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p><u></u>  <u></u></p>
<p>ab -n 10000 -c 1000 <a href="http://localhost/perl-script/enquiry.pl" \
target="_blank"> http://localhost/perl-script/enquiry.pl</a><u></u><u></u></p>
<p>This is ApacheBench, Version 2.3 &lt;$Revision: 1879490 $&gt;<u></u><u></u></p>
<p>Copyright 1996 Adam Twiss, Zeus Technology Ltd,
<a href="http://www.zeustech.net/" \
target="_blank">http://www.zeustech.net/</a><u></u><u></u></p> <p>Licensed to The \
Apache Software Foundation, <a href="http://www.apache.org/" target="_blank"> \
http://www.apache.org/</a><u></u><u></u></p> <p><u></u>  <u></u></p>
<p>Benchmarking localhost (be patient)<u></u><u></u></p>
<p>Completed 1000 requests<u></u><u></u></p>
<p>Completed 2000 requests<u></u><u></u></p>
<p>Completed 3000 requests<u></u><u></u></p>
<p>Completed 4000 requests<u></u><u></u></p>
<p>Completed 5000 requests<u></u><u></u></p>
<p>Completed 6000 requests<u></u><u></u></p>
<p>Completed 7000 requests<u></u><u></u></p>
<p>Completed 8000 requests<u></u><u></u></p>
<p>Completed 9000 requests<u></u><u></u></p>
<p>Completed 10000 requests<u></u><u></u></p>
<p>Finished 10000 requests<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p><u></u>  <u></u></p>
<p>Server Software:               Apache/2.4.52<u></u><u></u></p>
<p>Server Hostname:               localhost<u></u><u></u></p>
<p>Server Port:                       80<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>Document Path:                   /perl-script/<a href="http://enquiry.pl" \
target="_blank">enquiry.pl</a><u></u><u></u></p> <p>Document Length:               \
1329 bytes<u></u><u></u></p> <p><u></u>  <u></u></p>
<p>Concurrency Level:           1000<u></u><u></u></p>
<p>Time taken for tests:     1.218 seconds<u></u><u></u></p>
<p>Complete requests:           10000<u></u><u></u></p>
<p>Failed requests:               0<u></u><u></u></p>
<p>Total transferred:           15010000 bytes<u></u><u></u></p>
<p>HTML transferred:             13290000 bytes<u></u><u></u></p>
<p>Requests per second:       8207.94 [#/sec] (mean)<u></u><u></u></p>
<p>Time per request:             121.833 [ms] (mean)<u></u><u></u></p>
<p>Time per request:             0.122 [ms] (mean, across all concurrent \
requests)<u></u><u></u></p> <p>Transfer rate:                   12031.37 [Kbytes/sec] \
received<u></u><u></u></p> <p><u></u>  <u></u></p>
<p>Connection Times (ms)<u></u><u></u></p>
<p>                           min   mean[+/-sd] median     max<u></u><u></u></p>
<p>Connect:               0       2     6.2           0           \
24<u></u><u></u></p> <p>Processing:         4     93   49.6         82         \
458<u></u><u></u></p> <p>Waiting:               1     80   44.5         71         \
455<u></u><u></u></p> <p>Total:                 17     95   49.5         84         \
458<u></u><u></u></p> <p><u></u>  <u></u></p>
<p>Percentage of the requests served within a certain time (ms)<u></u><u></u></p>
<p>   50%         84<u></u><u></u></p>
<p>   66%       100<u></u><u></u></p>
<p>   75%       112<u></u><u></u></p>
<p>   80%       120<u></u><u></u></p>
<p>   90%       147<u></u><u></u></p>
<p>   95%       173<u></u><u></u></p>
<p>   98%       233<u></u><u></u></p>
<p>   99%       318<u></u><u></u></p>
<p>100%       458 (longest request)<u></u><u></u></p>
<p><u></u>  <u></u></p>
<p>% pgrep -f apache2 | xargs -n1 ps -uwww<u></u><u></u></p>
<p>USER                 PID %CPU %MEM       VSZ     RSS TTY           STAT START     \
TIME COMMAND<u></u><u></u></p> <p>root           442827   0.0   0.1   18180 14244 ?   \
Ss     11:27     0:00 /usr/sbin/apache2 -k start<u></u><u></u></p> <p>USER            \
PID %CPU %MEM       VSZ     RSS TTY           STAT START     TIME \
COMMAND<u></u><u></u></p> <p>www-data   446387   1.7   1.5 7549352 129692 ?           \
Sl     11:28     0:12 /usr/sbin/apache2 -k start<u></u><u></u></p> <p>USER            \
PID %CPU %MEM       VSZ     RSS TTY           STAT START     TIME \
COMMAND<u></u><u></u></p> <p>www-data   451006 15.2   1.5 7483708 128468 ?           \
Sl     11:39     0:10 /usr/sbin/apache2 -k start<u></u><u></u></p> <p>USER            \
PID %CPU %MEM       VSZ     RSS TTY           STAT START     TIME \
COMMAND<u></u><u></u></p> <p>www-data   451317 11.7   1.4 7483772 119836 ?           \
Sl     11:39     0:07 /usr/sbin/apache2 -k start<u></u><u></u></p> <p>USER            \
PID %CPU %MEM       VSZ     RSS TTY           STAT START     TIME \
COMMAND<u></u><u></u></p> <p>www-data   451629   6.4   1.3 7483804 113012 ?           \
Sl     11:39     0:03 /usr/sbin/apache2 -k start<u></u><u></u></p> <p>USER            \
PID %CPU %MEM       VSZ     RSS TTY           STAT START     TIME \
COMMAND<u></u><u></u></p> <p>www-data   451929   1.1   1.4 7483816 116668 ?           \
Sl     11:39     0:00 /usr/sbin/apache2 -k start<u></u><u></u></p> </div>
</div>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">Joe Schaefer, Ph.D.
<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div>
 <div>We only build what you need built.</div>
<div>
<div>
<div>&lt;<a href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div> <div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div> <div><br>
</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" height="26" \
src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" \
class="gmail_signature"><div dir="ltr">Joe Schaefer, Ph.D.<div><img width="96" \
height="26" src="https://ci3.googleusercontent.com/mail-sig/AIorK4xJ9wGYA7VWN-zW0DcpKll4IC6JxLGTMmDkmdn4h4eHliQhOGGu1nAHJcSkYVnw1jXF8E--UGA"></div><div>We \
only build what you need built.</div><div><div><div>&lt;<a \
href="mailto:joe@sunstarsys.com" \
target="_blank">joe@sunstarsys.com</a>&gt;</div><div><a href="tel://954.253.3732" \
target="_blank">954.253.3732</a></div><div><br></div><div><br></div></div></div></div></div>




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic