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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <j...@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 <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>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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>
>>>>
>>>>
>>>>
>>>
>>> --
>>> 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>
>
>
>

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

Reply via email to