[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
|