On Tue, Jun 17, 2014 at 10:29 AM, Eliot Miranda <eliot.mira...@gmail.com>
wrote:

> Hi Philippe,
>
>
> On Tue, Jun 17, 2014 at 1:03 AM, Philippe Marschall <
> philippe.marsch...@netcetera.ch> wrote:
>
>> On 13.06.14 01:41, Eliot Miranda wrote:
>>
>>>
>>>
>>>
>>>
>>> Hi All,
>>>
>>>      it gives me great pleasure to let you know that a spur-format trunk
>>> Squeak image is finally available at
>>> http://www.mirandabanda.org/files/Cog/SpurImages/.  Spur VMs are
>>> available at http://www.mirandabanda.org/files/Cog/VM/VM.r2987/.
>>>
>>> …
>>>
>>
>> I'm seeing a Seaside request handling benchmark going from 10k req/s to
>> 11k req/s.
>> Don't be too quick to dismiss this as being IO-bound (being IO-bound is
>> actually quite hard on Squeak/Pharo). During the benchmark Squeak fully
>> saturates one core. It is hard to tell what the limiting factor for this
>> benchmark actually is. But removing one or two String allocations from the
>> request handling loop usually yields about 100 to 200 additional req/s.
>>
>
> That's good news at least.  One thing you can try is the VMProfiler.  It's
> an interactive Morphic application so it will try and open and may crash
> Load the VMProfiler and use it via
>

What I meant to say is that it may fail if the morph can't open.  It
doesn't routinely fail :-)



>
>     VMProfiler openInstance
>         spyOn: [...];
>         report: aStream.
>
> e.g.
> VMProfiler openInstance
> spyOn: [1 tinyBenchmarks];
>  report: (Transcript cr; yourself).
> Transcript flush.
>
> produces:
>
> /Users/eliot/Cog/oscogvm/build.macos32x86/squeak.cog.spur/Fast.app/Contents/MacOS/Squeak
>  6/17/2014
> eden size: 2,603,344  stack pages: 160  code size: 1,048,576
>
> 1 tinyBenchmarks
>
> gc prior.  clear prior.
> 6.298 seconds; sampling frequency 1473 hz
> 9231 samples in the VM (9275 samples in the entire program)  99.53% of
> total
>
> 8798 samples in generated vm code 95.31% of entire vm (94.86% of total)
> 433 samples in vanilla vm code   4.69% of entire vm (  4.67% of total)
>
> % of generated vm code (% of total) (samples) (cumulative)
> 61.29%    (58.13%) Integer>>benchFib (5392) (61.29%)
> 13.47%    (12.78%) Integer>>benchmark (1185) (74.76%)
> 11.48%    (10.89%) Object>>at:put: (1010) (86.24%)
>   9.60%    (  9.11%) SmallInteger>>+ (845) (95.84%)
>   3.99%    (  3.78%) Object>>at: (351) (99.83%)
>   0.07%    (  0.06%) ceBaseFram...Trampoline(6) (99.90%)
>   0.03%    (  0.03%) ceMethodAbort0Args (3) (99.93%)
>   0.03%    (  0.03%) Sequenceabl...om:to:put: (3) (99.97%)
>   0.02%    (  0.02%) Magnitude>>min: (2) (99.99%)
>   0.01%    (  0.01%) ceEnterCog...ceiverReg (1) (100.0%)
>
>
> % of vanilla vm code (% of total) (samples) (cumulative)
> 32.33%    (  1.51%) primitiveStringReplace (140) (32.33%)
> 24.25%    (  1.13%) copyAndForward (105) (56.58%)
> 13.63%    (  0.64%) marryFrameSP (59) (70.21%)
> 10.85%    (  0.51%) instantiateClassindexableSize (47) (81.06%)
>   3.46%    (  0.16%) ceBaseFrameReturn (15) (84.53%)
>   2.08%    (  0.10%) scavengeLoop (9) (86.61%)
>   1.62%    (  0.08%) checkForEvent...ontextSwitch (7) (88.22%)
>   1.39%    (  0.06%) externalEnsureIsBaseFrame (6) (89.61%)
>   1.39%    (  0.06%) voidVMStateForSn...nalPrimitivesIf(6) (90.99%)
>   1.15%    (  0.05%) mapInterpreterOops (5) (92.15%)
>   1.15%    (  0.05%) returnToExecuti...tContextSwitch(5) (93.30%)
>   1.15%    (  0.05%) scavengeReferentsOf (5) (94.46%)
>   0.92%    (  0.04%) handleStackOverflow (4) (95.38%)
>   0.92%    (  0.04%) signed64BitIntegerFor (4) (96.30%)
>   0.46%    (  0.02%) primitiveShortAt (2) (96.77%)
>   0.46%    (  0.02%) ceNonLocalReturn (2) (97.23%)
>   0.23%    (  0.01%) gMoveCwR (1) (97.46%)
>   0.23%    (  0.01%) genInnerPrimit...CharacterinReg (1) (97.69%)
>   0.23%    (  0.01%) genPrimitiveMultiply (1) (97.92%)
>   0.23%    (  0.01%) primitiveInflateDecompressBlock(1) (98.15%)
>   0.23%    (  0.01%) primitiveNewWithArg (1) (98.38%)
>   0.23%    (  0.01%) primitiveTestAnd...fCriticalSection(1) (98.61%)
>   0.23%    (  0.01%) processWeaklings (1) (98.85%)
>   0.23%    (  0.01%) scavengingGCTenuringIf (1) (99.08%)
>   0.23%    (  0.01%) updateMaybeObjRefAt (1) (99.31%)
>   0.23%    (  0.01%) wakeHighestPriority (1) (99.54%)
>   0.23%    (  0.01%) ceCannotResume (1) (99.77%)
>   0.23%    (  0.01%) ioPositionOfWindowSetxy (1) (100.0%)
>
>
>
> **Memory**
> old +574,744 bytes
>
> **GCs**
> full 0 totalling 0ms (0% elapsed time)
> scavenges 330 totalling 93ms (1.477% elapsed time), avg 0.282ms
>  tenures 0
> root table 0 overflows
>
> **Compiled Code Compactions**
> 0 totalling 0ms (0% elapsed time)
>
> **Events**
> Process switches 66 (10 per second)
> ioProcessEvents calls 314 (50 per second)
> Interrupt checks 3462 (550 per second)
> Event checks 3585 (569 per second)
> Stack overflows 421897 (66989 per second)
> Stack page divorces 0 (0 per second)
>
>
>
> While this profile is flat, it does show where the VM is spending its
> time, and since the VM is not something with deep call chains, this view is
> the most useful I have.
> The VMProfiler is part of the CogTools package at
> http://source.squeak.org/VMMaker.
>
> P.S. Extending the size of the DefaultTabsArray will result in a less
> cramped report.
>
> HTH
> Eliot
>



-- 
best,
Eliot

Reply via email to