[Pkg] The Trunk: System-ul.939.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Mar 20 11:54:14 UTC 2017
Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.939.mcz
==================== Summary ====================
Name: System-ul.939
Author: ul
Time: 20 March 2017, 12:53:20.911193 pm
UUID: 6ec2857d-f206-4fd1-92f0-37edc4f72123
Ancestors: System-eem.938
Always initialize the idleMs temporary in SmalltalkImage >> #vmStatisticsReportString
=============== Diff against System-eem.938 ===============
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 fullGCCompactionTime incrGCs incrGCTime tenureCount upTime
upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str freeSize youngSize used spur timeReporter idleMs idleMs2 |
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.
fullGCCompactionTime := params at: 18.
upTime := (params at: 20) ~= 0 "utcMicrosecondClock at startup 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"
spur := (params at: 41) anyMask: 16.
str := WriteStream on: (String new: 2048).
timeReporter := [:time| | seconds |
seconds := time / 1000.
seconds >= (60*60*24)
ifTrue:
[str print: seconds / 60 // 60 // 24; nextPut: $d; space;
print: seconds / 60 // 60 \\ 24; nextPut: $h; space]
ifFalse:
[seconds >= (60*60) ifTrue:
[str print: (seconds / 60 // 60); nextPut: $h; space]].
str
print: (seconds / 60 \\ 60) asInteger; nextPut: $m; space;
print: (seconds \\ 60) asInteger; nextPut: $s].
str nextPutAll: 'uptime '.
timeReporter value: upTime.
+ (idleMs := params at: 16) ~= 0 ifTrue:
- (params at: 16) ~= 0 ifTrue:
[str tab; nextPutAll: '(runtime '.
+ idleMs := idleMs // 1000.
- idleMs := (params at: 16) // 1000.
timeReporter value: upTime - idleMs.
str nextPutAll: ', idletime '.
timeReporter value: idleMs.
str nextPut: $)].
str 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.
spur ifTrue:
[(youngSize := (params at: 19) * 7 // 5) = 0 ifTrue: [params at: 44].
youngSize := youngSize roundUpTo: 1024.
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 / memorySize * 100) maxDecimalPlaces: 1; nextPutAll: '%)'; cr.
str nextPutAll: ' free ';
nextPutAll: (memorySize - youngSpaceEnd) asStringWithCommas; nextPutAll: ' bytes (';
print: (memorySize - youngSpaceEnd / memorySize * 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'.
idleMs > 0 ifTrue:
[str
space;
print: upTime - idleMs / (fullGCs + incrGCs) maxDecimalPlaces: 1;
nextPutAll: ' ms runtime between GCs'].
str nextPut: $)].
str cr.
str nextPutAll: ' full ';
nextPutAll: fullGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
print: fullGCTime / (upTime - idleMs) * 100 maxDecimalPlaces: 2;
nextPutAll: '% runtime)';
nextPutAll: ', avg '; print: (fullGCTime / (fullGCs max: 1)) maxDecimalPlaces: 1; nextPutAll: ' ms'.
(spur and: [fullGCCompactionTime ~= 0]) ifTrue:
[str cr; nextPutAll: ' marking ';
nextPutAll: (fullGCTime - fullGCCompactionTime) asStringWithCommas; nextPutAll: ' ms (';
print: (fullGCTime - fullGCCompactionTime) / fullGCTime * 100 maxDecimalPlaces: 1;
nextPutAll: '%) avg '; print: (fullGCTime - fullGCCompactionTime / (fullGCs max: 1)) maxDecimalPlaces: 1;
nextPutAll: ' ms,'; cr;
nextPutAll: ' compacting ';
nextPutAll: fullGCCompactionTime asStringWithCommas; nextPutAll: ' ms (';
print: fullGCCompactionTime / fullGCTime * 100 maxDecimalPlaces: 1;
nextPutAll: '%) avg '; print: fullGCCompactionTime / (fullGCs max: 1) maxDecimalPlaces: 1;
nextPutAll: ' ms'].
str cr.
str nextPutAll: (spur ifTrue: [' scavenges '] ifFalse: [' incr ']);
nextPutAll: incrGCs asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
print: incrGCTime / (upTime - idleMs) * 100 maxDecimalPlaces: 2;
nextPutAll: '% runtime), avg '; print: incrGCTime / incrGCs maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
str nextPutAll: ' tenures ';
nextPutAll: tenureCount asStringWithCommas.
tenureCount = 0 ifFalse:
[spur
ifTrue: [str nextPutAll: ' (avg '; print: tenureCount // (incrGCs max: 1); nextPutAll: ' tenures per scavenge)']
ifFalse: [str nextPutAll: ' (avg '; print: incrGCs // tenureCount; nextPutAll: ' GCs/tenure)']].
str cr.
LastStats ifNil: [LastStats := Array new: 7]
ifNotNil: [
LastStats size < 7 ifTrue:
[LastStats := LastStats, (Array new: 7 - LastStats size withAll: 0)].
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).
idleMs2 := idleMs - (LastStats at: 7).
str nextPutAll: self textMarkerForShortReport ;
nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
fullGCs2 + incrGCs2 > 0 ifTrue:
[str
nextPutAll: ' (';
print: upTime2 // (fullGCs2 + incrGCs2);
nextPutAll: ' ms between GCs'.
idleMs2 > 0 ifTrue:
[str
nextPutAll: ', ';
print: upTime2 - idleMs2 // (fullGCs2 + incrGCs2);
nextPutAll: ' ms runtime between GCs'].
str nextPut: $)].
str cr.
str nextPutAll: ' uptime '; print: (upTime2 / 1000.0) maxDecimalPlaces: 1;
nextPutAll: ' s, runtime '; print: (upTime2 - idleMs2 / 1000.0) maxDecimalPlaces: 1;
nextPutAll: ' s, idletime '; print: (idleMs2 / 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
str nextPutAll: ' full ';
nextPutAll: fullGCs2 asStringWithCommas.
fullGCs2 + fullGCTime2 > 0 ifTrue:
[str nextPutAll: ' totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms (';
print: fullGCTime2 / (upTime2 - idleMs2) * 100 maxDecimalPlaces: 1;
nextPutAll: '% runtime)'.
str nextPutAll: ', avg '; print: fullGCTime2 / (fullGCs2 max: 1) maxDecimalPlaces: 1; nextPutAll: ' ms'].
str cr.
str nextPutAll: (spur ifTrue: [' scavenge '] ifFalse: [' incr ']);
nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: ' totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms (';
print: incrGCTime2 / (upTime2 - idleMs2) * 100 maxDecimalPlaces: 1;
nextPutAll: '% runtime), avg '; print: incrGCTime2 / (incrGCs2 max: 1) maxDecimalPlaces: 1; nextPutAll: ' ms'.
str cr.
str nextPutAll: ' tenures ';
nextPutAll: tenureCount2 asStringWithCommas.
tenureCount2 = 0 ifFalse:
[spur
ifTrue: [str nextPutAll: ' (avg '; print: tenureCount2 // (incrGCs2 max: 1); nextPutAll: ' tenures per scavenge)']
ifFalse: [str nextPutAll: ' (avg '; print: incrGCs2 // tenureCount2; nextPutAll: ' GCs/tenure)']].
str cr.
].
LastStats := { upTime. fullGCs. fullGCTime. incrGCs. incrGCTime. tenureCount. idleMs }.
^str contents
!
More information about the Packages
mailing list