The Trunk: System-eem.789.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: System-eem.789.mcz

commits-2
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.789.mcz

==================== Summary ====================

Name: System-eem.789
Author: eem
Time: 25 January 2016, 7:37:27.08369 pm
UUID: b86ef820-368a-49a4-925d-ea983158737f
Ancestors: System-mt.788

Fix vmStatisticsReportString given recent clock changes.  When available, use vmParameterAt: 20 to get the utc microsecond clock at startup, otherwise defer to the eventMillisecondClock.

Remember to nil out LastStats on start-up to eliminate those whacky first queries where LastStats is left over from a prior snapshot.  Also don't bother reestablishing event forwarding to Smalltalk unless starting up.

=============== Diff against System-mt.788 ===============

Item was removed:
- ----- Method: SmalltalkImage class>>startUp (in category 'class initialization') -----
- startUp
- SystemChangeNotifier uniqueInstance notify: Smalltalk ofAllSystemChangesUsing: #event:!

Item was added:
+ ----- Method: SmalltalkImage class>>startUp: (in category 'class initialization') -----
+ startUp: resuming
+ resuming ifTrue:
+ [LastStats := nil.
+ SystemChangeNotifier uniqueInstance notify: Smalltalk ofAllSystemChangesUsing: #event:]!

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 onSpur oldSpaceEnd youngSpaceEnd memorySize fullGCs fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2 fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str freeSize youngSize used |
  params := self getVMParameters.
- onSpur := (params at: 41 ifAbsent: [ 0 ]) anyMask: 16.
  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"
- upTime := Time millisecondClockValue.
 
  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.
- youngSize := onSpur
- ifTrue: [params at: 44 "eden size"] "Spur"
- ifFalse:  [youngSpaceEnd - oldSpaceEnd]. "Squeak V3"
  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.
- onSpur ifTrue: [youngSize := youngSpaceEnd "used eden"].
- freeSize := onSpur
- ifTrue: [(params at: 54) + (params at: 44) - youngSize] "Spur"
- ifFalse:  [memorySize - youngSpaceEnd] "Squeak V3".
- used := onSpur
- ifTrue: [youngSize + oldSpaceEnd - freeSize] "Spur"
- ifFalse:  [youngSpaceEnd]. "Squeak V3"
  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.
 
  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
  !