<div dir="ltr">Thanks David!<div><br></div><div> does the report look OK on the Interpreter VMs?</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jun 26, 2014 at 4:07 PM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">David T. Lewis uploaded a new version of SystemReporter to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/SystemReporter-dtl.23.mcz" target="_blank">http://source.squeak.org/trunk/SystemReporter-dtl.23.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: SystemReporter-dtl.23<br>
Author: dtl<br>
Time: 26 June 2014, 7:07:41.163 pm<br>
UUID: 1becec2c-9df2-43f8-b6f3-374d5d490000<br>
Ancestors: SystemReporter-eem.22<br>
<br>
Fix missing ifFalse: for isCog in VM parameters<br>
<br>
=============== Diff against SystemReporter-eem.22 ===============<br>
<br>
Item was changed:<br>
----- Method: SystemReporter>>reportVMParameters: (in category 'reporting') -----<br>
reportVMParameters: aStream<br>
| vmParameters isCog isSpur |<br>
self header: 'Virtual Machine Parameters' on: aStream.<br>
vmParameters := Smalltalk vm getVMParameters.<br>
isCog := (vmParameters at: 41 ifAbsent: [0]) anyMask: 1. "determine Cog/Stack via bit 0, requires native float order."<br>
isSpur := isCog and: [(vmParameters at: 41 ifAbsent: [0]) anyMask: 2r10000]. "bit 16 is the Spur bit"<br>
(isSpur<br>
ifFalse:<br>
[#( 1 'size of old space'<br>
2 'size of young+old space'<br>
3 'size of memory')]<br>
ifTrue:<br>
[#( 1 'size of old space'<br>
2 'size of new space'<br>
3 'size of heap')]),<br>
(isSpur<br>
ifFalse:<br>
[#( 4 'allocationCount'<br>
5 'allocations between GCs'<br>
6 'survivor count tenuring threshold')]<br>
ifTrue: [#()]),<br>
#( 7 'full GCs since startup'<br>
8 'total milliseconds in full GCs since startup'),<br>
(isSpur<br>
ifFalse: [#( 9 'incremental GCs since startup'<br>
10 'total milliseconds in incremental GCs since startup')]<br>
ifTrue: [#( 9 'scavenging GCs since startup'<br>
10 'total milliseconds in scavenging GCs since startup')]),<br>
#( 11 'tenures of surving objects since startup'),<br>
(isCog<br>
ifFalse:<br>
[#( 12 'specific to the translating VM'<br>
13 'specific to the translating VM'<br>
14 'specific to the translating VM'<br>
15 'specific to the translating VM'<br>
16 'specific to the translating VM'<br>
17 'specific to the translating VM'<br>
18 'specific to the translating VM'<br>
19 'specific to the translating VM'<br>
20 'specific to the translating VM')]<br>
ifTrue:<br>
[{12 to: 20. 'specific to the translating VM'}]),<br>
#( 21 'root table size'<br>
22 'root table overflows since startup'<br>
23 'bytes of extra memory to reserve for VM buffers, plugins, etc.'<br>
24 'memory threshold above which shrinking object memory'<br>
25 'memory headroom when growing object memory'),<br>
(isCog<br>
ifFalse:<br>
[#( 26 'interruptChecksEveryNms - force an ioProcessEvents every N milliseconds, in case the image is not calling getNextEvent often')]<br>
ifTrue:<br>
[#( 26 'heartbeat period (ms)')]),<br>
(isSpur<br>
ifFalse:<br>
[#( 27 'number of times mark loop iterated for current IGC/FGC includes ALL marking'<br>
28 'number of times sweep loop iterated for current IGC/FGC'<br>
29 'number of times make forward loop iterated for current IGC/FGC'<br>
30 'number of times compact move loop iterated for current IGC/FGC')]<br>
ifTrue: [#()]),<br>
#( 31 'number of grow memory requests'<br>
32 'number of shrink memory requests'),<br>
(isSpur<br>
ifFalse:<br>
[#( 33 'number of root table entries used for current IGC/FGC'<br>
34 'number of allocations done before current IGC/FGC'<br>
35 'number of survivor objects after current IGC/FGC'<br>
36 'millisecond clock when current IGC/FGC completed'<br>
37 'number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC'<br>
38 'milliseconds taken by current IGC '<br>
39 'Number of finalization signals for Weak Objects pending when current IGC/FGC completed')]<br>
ifTrue:<br>
[#( 36 'millisecond clock when current SGC/FGC completed'<br>
38 'milliseconds taken by current SGC '<br>
39 'Number of finalization signals for Weak Objects pending when current SGC/FGC completed')]),<br>
#( 40 'VM word size - 4 or 8'),<br>
+ (isCog<br>
+ ifTrue:<br>
+ [#(<br>
+ 41 'imageFormatVersion for the VM'<br>
+ 42 'number of stack pages in use'<br>
+ 43 'desired number of stack pages (stored in image file header, max 65535)'<br>
+ 44 'size of eden, in bytes'<br>
+ 45 'desired size of eden, in bytes (stored in image file header)'<br>
+ 46 'machine code zone size, in bytes'<br>
+ 47 'desired machine code zone size (0 => default 1Mb)'<br>
+ 48 'various header flags. See getCogVMFlags.'<br>
+ 49 'max size the image promises to grow the external semaphore table to'),<br>
+ (isSpur<br>
+ ifFalse:<br>
+ [{ 50 to: 54. 'reserved for VM parameters that persist in the image (such as size of eden above)'.<br>
+ 55 to: 56. 'specific to Spur' }]<br>
+ ifTrue:<br>
+ [{ 50 to: 53. 'reserved for VM parameters that persist in the image (such as size of eden above)' },<br>
+ #( 54 'total free old space'<br>
+ 55 'ratio of growth and image size at or above which a GC will be performed post scavenge')]),<br>
+ #( 56 'number of process switches since startup'<br>
+ 57 'number of ioProcessEvents calls since startup'<br>
+ 58 'number of forceInterruptCheck calls since startup'<br>
+ 59 'number of check event calls since startup'<br>
+ 60 'number of stack page overflows since startup'<br>
+ 61 'number of stack page divorces since startup'<br>
+ 62 'compiled code compactions since startup'<br>
+ 63 'total milliseconds in compiled code compactions since startup'<br>
+ 64 'the number of methods that currently have jitted machine-code'<br>
+ 65 'whether the VM supports MULTIPLE_BYTECODE_SETS or not.'<br>
+ 66 'the byte size of a stack page'),<br>
+ { 67 to: 69. 'reserved for more Cog-related info' },<br>
+ #( 70 'the vmProxyMajorVersion (the interpreterProxy VM_MAJOR_VERSION)'<br>
+ 71 'the vmProxyMinorVersion (the interpreterProxy VM_MINOR_VERSION)')]<br>
+ ifFalse:<br>
+ [#()])<br>
- (isCog ifTrue:<br>
- [#(<br>
- 41 'imageFormatVersion for the VM'<br>
- 42 'number of stack pages in use'<br>
- 43 'desired number of stack pages (stored in image file header, max 65535)'<br>
- 44 'size of eden, in bytes'<br>
- 45 'desired size of eden, in bytes (stored in image file header)'<br>
- 46 'machine code zone size, in bytes'<br>
- 47 'desired machine code zone size (0 => default 1Mb)'<br>
- 48 'various header flags. See getCogVMFlags.'<br>
- 49 'max size the image promises to grow the external semaphore table to'),<br>
- (isSpur<br>
- ifFalse:<br>
- [{ 50 to: 54. 'reserved for VM parameters that persist in the image (such as size of eden above)'.<br>
- 55 to: 56. 'specific to Spur' }]<br>
- ifTrue:<br>
- [{ 50 to: 53. 'reserved for VM parameters that persist in the image (such as size of eden above)' },<br>
- #( 54 'total free old space'<br>
- 55 'ratio of growth and image size at or above which a GC will be performed post scavenge')]),<br>
- #( 56 'number of process switches since startup'<br>
- 57 'number of ioProcessEvents calls since startup'<br>
- 58 'number of forceInterruptCheck calls since startup'<br>
- 59 'number of check event calls since startup'<br>
- 60 'number of stack page overflows since startup'<br>
- 61 'number of stack page divorces since startup'<br>
- 62 'compiled code compactions since startup'<br>
- 63 'total milliseconds in compiled code compactions since startup'<br>
- 64 'the number of methods that currently have jitted machine-code'<br>
- 65 'whether the VM supports MULTIPLE_BYTECODE_SETS or not.'<br>
- 66 'the byte size of a stack page'),<br>
- { 67 to: 69. 'reserved for more Cog-related info' },<br>
- #( 70 'the vmProxyMajorVersion (the interpreterProxy VM_MAJOR_VERSION)'<br>
- 71 'the vmProxyMinorVersion (the interpreterProxy VM_MINOR_VERSION)')])<br>
pairsDo: [:idx :desc | | value values |<br>
aStream nextPut: $#.<br>
idx isInteger<br>
ifTrue:<br>
[value := vmParameters at: idx.<br>
aStream print: idx; tab; nextPutAll: ((value isInteger and: [idx ~= 41]) ifTrue: [value asStringWithCommas] ifFalse: [value printString])]<br>
ifFalse:<br>
[value := vmParameters at: idx first.<br>
aStream print: idx first; next: 2 put: $.; print: idx last; tab.<br>
values := idx collect: [:i| vmParameters at: i].<br>
values asSet size = 1<br>
ifTrue: [aStream print: value]<br>
ifFalse: [values do: [:v| aStream print: v] separatedBy: [aStream nextPutAll: ', ']]].<br>
aStream tab; nextPutAll: desc; cr]!<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div>