[squeak-dev] The Trunk: System-dtl.790.mcz

Eliot Miranda eliot.miranda at gmail.com
Fri Jan 29 19:47:34 UTC 2016



_,,,^..^,,,_ (phone)

> On Jan 29, 2016, at 10:52 AM, David T. Lewis <lewis at mail.msen.com> wrote:
> 
> Hi Eliot,
> 
> I ran into in testing the V3 update stream I have been maintaining on
> http://www.squeaksource.com/TrunkUpdateStreamV3. I think it's an
> interesting experiment for a number or reasons, although I have not been
> discussing it on the list because I don't want to invite confusion or
> distract attention from our main Spur/trunk work. But please indulge me in
> my occasional private experiments :-)

Ok, for the moment :-)

> 
> Dave
> 
>> Hi David,
>> 
>>    why bother?  Since the two never need to coexist doesn't it make sense
>> to have two different, simple, more readable versions?  I find the
>> code complex and since it is important, want to keep it as
>> comprehensible as possible.  I think in this case it is better to let
>> the two diverge.  You're just adding back cost we don't need to pay.
>> 
>> _,,,^..^,,,_ (phone)
>> 
>>> On Jan 29, 2016, at 7:31 AM, commits at source.squeak.org wrote:
>>> 
>>> David T. Lewis uploaded a new version of System to project The Trunk:
>>> http://source.squeak.org/trunk/System-dtl.790.mcz
>>> 
>>> ==================== Summary ====================
>>> 
>>> Name: System-dtl.790
>>> Author: dtl
>>> Time: 29 January 2016, 11:37:48.065507 pm
>>> UUID: 1ccde720-42a2-41fe-bcc4-cb9694d5af07
>>> Ancestors: System-eem.789
>>> 
>>> Update vmStatisticsReportString to restore memory stats when running on
>>> pre-spur VM.
>>> 
>>> =============== Diff against System-eem.789 ===============
>>> 
>>> Item was changed:
>>> ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm
>>> statistics') -----
>>> vmStatisticsReportString
>>>     "(Workspace new contents: Smalltalk vmStatisticsReportString)
>>>         openLabel: 'VM Statistics'"
>>>     "StringHolderView
>>>         open: (StringHolder new contents: Smalltalk
>>> vmStatisticsReportString)
>>>         label: 'VM Statistics'"
>>> 
>>>     | params oldSpaceEnd youngSpaceEnd memorySize fullGCs fullGCTime
>>> incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2
>>> incrGCs2 incrGCTime2 tenureCount2 str freeSize youngSize used |
>>>     params := self getVMParameters.
>>>     oldSpaceEnd            := params at: 1.
>>>     youngSpaceEnd        := params at: 2.
>>>     memorySize            := params at: 3.
>>>     fullGCs                := params at: 7.
>>>     fullGCTime            := params at: 8.
>>>     incrGCs                := params at: 9.
>>>     incrGCTime            := params at: 10.
>>>     tenureCount            := params at: 11.
>>>     upTime := (params at: 20) ~= 0 "utcMicrosecondClock at startupp in
>>> later Spur VMs"
>>>                 ifTrue: [Time utcMicrosecondClock - (params at: 20) +
>>> 500 // 1000]
>>>                 ifFalse: [Time eventMillisecondClock]. "Fall back on
>>> old microsecond clock; Good for 47.5 days"
>>> 
>>>     str := WriteStream on: (String new: 700).
>>>     str    nextPutAll: 'uptime            ';
>>>         print: (upTime / 1000 / 60 // 60); nextPut: $h;
>>>         print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
>>>         print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
>>> 
>>>     str    nextPutAll: 'memory        ';
>>>         nextPutAll: memorySize asStringWithCommas; nextPutAll: '
>>> bytes'; cr.
>>>     str    nextPutAll:    '    old            ';
>>>         nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: ' bytes
>>> (';
>>>         print: (oldSpaceEnd / memorySize * 100) maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr.
>>> -    youngSize := params at: 44.
>>> -    str    nextPutAll: '    young        ';
>>> -        nextPutAll: youngSize asStringWithCommas; nextPutAll: ' bytes
>>> (';
>>> -        print: youngSize / memorySize * 100 maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr.
>>> -    youngSize := youngSpaceEnd. "used eden"
>>> -    freeSize := (params at: 54) + (params at: 44) - youngSize.
>>> -    used := youngSize + oldSpaceEnd - freeSize.
>>> -    str    nextPutAll: '    used        ';
>>> -        nextPutAll: used asStringWithCommas; nextPutAll: ' bytes (';
>>> -        print: used / memorySize * 100 maxDecimalPlaces: 1; nextPutAll:
>>> '%)'; cr.
>>> -    str    nextPutAll: '    free        ';
>>> -        nextPutAll: freeSize asStringWithCommas; nextPutAll: ' bytes
>>> (';
>>> -        print: freeSize / memorySize * 100 maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr.
>>> 
>>> +    params size >= 54 ifTrue: [ "Spur object memory"
>>> +        youngSize := params at: 44.
>>> +        str    nextPutAll: '    young        ';
>>> +            nextPutAll: youngSize asStringWithCommas; nextPutAll: '
>>> bytes (';
>>> +            print: youngSize / memorySize * 100 maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr.
>>> +        youngSize := youngSpaceEnd. "used eden"
>>> +        freeSize := (params at: 54) + (params at: 44) - youngSize.
>>> +        used := youngSize + oldSpaceEnd - freeSize.
>>> +        str    nextPutAll: '    used        ';
>>> +            nextPutAll: used asStringWithCommas; nextPutAll: ' bytes
>>> (';
>>> +            print: used / memorySize * 100 maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr.
>>> +        str    nextPutAll: '    free        ';
>>> +            nextPutAll: freeSize asStringWithCommas; nextPutAll: '
>>> bytes (';
>>> +            print: freeSize / memorySize * 100 maxDecimalPlaces: 1;
>>> nextPutAll: '%)'; cr
>>> +    ] ifFalse: [ "Earlier VM and V3 object memory"
>>> +        str    nextPutAll: '    young        ';
>>> +            nextPutAll: (youngSpaceEnd - oldSpaceEnd)
>>> asStringWithCommas; nextPutAll: ' bytes (';
>>> +            print: (youngSpaceEnd - oldSpaceEnd / memorySize * 100)
>>> maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> +        str    nextPutAll: '    used        ';
>>> +            nextPutAll: youngSpaceEnd asStringWithCommas; nextPutAll: '
>>> bytes (';
>>> +            print: (youngSpaceEnd / memoryEnd * 100) maxDecimalPlaces:
>>> 1; nextPutAll: '%)'; cr.
>>> +        str    nextPutAll: '    free        ';
>>> +            nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommas;
>>> nextPutAll: ' bytes (';
>>> +            print: (memoryEnd - youngSpaceEnd / memoryEnd * 100)
>>> maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
>>> +    ].
>>> +
>>>     str    nextPutAll: 'GCs            ';
>>>         nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
>>>     fullGCs + incrGCs > 0 ifTrue: [
>>>         str
>>>             nextPutAll: ' (';
>>>             print: (upTime / (fullGCs + incrGCs)) maxDecimalPlaces: 1;
>>>             nextPutAll: ' ms between GCs)'
>>>     ].
>>>     str cr.
>>>     str    nextPutAll: '    full            ';
>>>         nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling
>>> '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms
>>> (';
>>>         print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
>>>         nextPutAll: '% uptime)'.
>>>     fullGCs = 0 ifFalse:
>>>         [str    nextPutAll: ', avg '; print: (fullGCTime / fullGCs)
>>> maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>>     str    cr.
>>>     str    nextPutAll: '    incr            ';
>>>         nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling
>>> '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms
>>> (';
>>>         print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
>>>         nextPutAll: '% uptime), avg '; print: (incrGCTime / incrGCs)
>>> maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
>>>     str    nextPutAll: '    tenures        ';
>>>         nextPutAll: tenureCount asStringWithCommas.
>>>     tenureCount = 0 ifFalse:
>>>         [str nextPutAll: ' (avg '; print: incrGCs // tenureCount;
>>> nextPutAll: ' GCs/tenure)'].
>>>     str    cr.
>>> 
>>> LastStats ifNil: [LastStats := Array new: 6]
>>> ifNotNil: [
>>>     upTime2 := upTime - (LastStats at: 1).
>>>     fullGCs2 := fullGCs - (LastStats at: 2).
>>>     fullGCTime2 := fullGCTime - (LastStats at: 3).
>>>     incrGCs2 := incrGCs - (LastStats at: 4).
>>>     incrGCTime2 := incrGCTime - (LastStats at: 5).
>>>     tenureCount2 := tenureCount - (LastStats at: 6).
>>> 
>>>     str    nextPutAll: self textMarkerForShortReport ;
>>>         nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
>>>     fullGCs2 + incrGCs2 > 0 ifTrue: [
>>>         str
>>>             nextPutAll: ' (';
>>>             print: upTime2 // (fullGCs2 + incrGCs2);
>>>             nextPutAll: ' ms between GCs)'.
>>>     ].
>>>     str cr.
>>>     str    nextPutAll: '    uptime        '; print: (upTime2 / 1000.0)
>>> maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
>>>     str    nextPutAll: '    full            ';
>>>         nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: '
>>> totalling '; nextPutAll: fullGCTime2 asStringWithCommas;
>>> nextPutAll: ' ms (';
>>>         print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>>>         nextPutAll: '% uptime)'.
>>>     fullGCs2 = 0 ifFalse:
>>>         [str    nextPutAll: ', avg '; print: (fullGCTime2 / fullGCs2)
>>> maxDecimalPlaces: 1; nextPutAll: ' ms'].
>>>     str    cr.
>>>     str    nextPutAll: '    incr            ';
>>>         nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: '
>>> totalling '; nextPutAll: incrGCTime2 asStringWithCommas;
>>> nextPutAll: ' ms (';
>>>         print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
>>>         nextPutAll: '% uptime), avg '.
>>>     incrGCs2 > 0 ifTrue: [
>>>          str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1;
>>> nextPutAll: ' ms'
>>>     ].
>>>     str cr.
>>>     str    nextPutAll: '    tenures        ';
>>>         nextPutAll: tenureCount2 asStringWithCommas.
>>>     tenureCount2 = 0 ifFalse:
>>>         [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2;
>>> nextPutAll: ' GCs/tenure)'].
>>>     str    cr.
>>> ].
>>>     LastStats at: 1 put: upTime.
>>>     LastStats at: 2 put: fullGCs.
>>>     LastStats at: 3 put: fullGCTime.
>>>     LastStats at: 4 put: incrGCs.
>>>     LastStats at: 5 put: incrGCTime.
>>>     LastStats at: 6 put: tenureCount.
>>> 
>>>     ^ str contents
>>> !
> 
> 
> 


More information about the Squeak-dev mailing list