[squeak-dev] The Trunk: System-dtl.790.mcz
David T. Lewis
lewis at mail.msen.com
Fri Jan 29 18:52:40 UTC 2016
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 :-)
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
|