Eliot Miranda uploaded a new version of CogTools to project VM Maker: http://source.squeak.org/VMMaker/CogTools-eem.70.mcz ==================== Summary ==================== Name: CogTools-eem.70 Author: eem Time: 17 June 2014, 10:59:51.468 am UUID: 558f0b66-463f-4b27-a542-718fd8485e78 Ancestors: CogTools-eem.69 Get new and old space sizes right in VMProfiler report. =============== Diff against CogTools-eem.69 =============== Item was changed: ----- Method: VMProfiler class>>reportGCStats:upTime:on: (in category 'reports') ----- reportGCStats: gcStatsArray upTime: elapsedMilliseconds on: str | oldSpaceEnd youngSpaceEnd memoryEnd fullGCs fullGCTime incrGCs incrGCTime tenureCount rootOverflows | gcStatsArray ifNil: [^self]. + oldSpaceEnd := gcStatsArray at: 2. "a.k.a. oldSpace size on Spur" - oldSpaceEnd := gcStatsArray at: 1. "a.k.a. oldSpace size on Spur" fullGCs := gcStatsArray at: 7. fullGCTime := gcStatsArray at: 8. incrGCs := gcStatsArray at: 9. incrGCTime := gcStatsArray at: 10. tenureCount := gcStatsArray at: 11. rootOverflows := gcStatsArray at: 22. str cr. str nextPutAll: '**Memory**'; cr. str nextPutAll: ' old '; nextPutAll: oldSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr. self amOnSpur ifTrue: [(gcStatsArray at: 54) ifNotNil: [:freeSpace| str nextPutAll: ' free '; nextPutAll: freeSpace asStringWithCommasSigned; nextPutAll: ' bytes'; cr]] ifFalse: + [youngSpaceEnd := gcStatsArray at: 1. - [youngSpaceEnd := gcStatsArray at: 2. memoryEnd := gcStatsArray at: 3. str nextPutAll: ' young '; nextPutAll: (youngSpaceEnd - oldSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr. str nextPutAll: ' used '; nextPutAll: youngSpaceEnd asStringWithCommasSigned; nextPutAll: ' bytes'; cr. str nextPutAll: ' free '; nextPutAll: (memoryEnd - youngSpaceEnd) asStringWithCommasSigned; nextPutAll: ' bytes'; cr]. str cr. str nextPutAll: '**GCs**'; cr. str nextPutAll: ' full '; print: fullGCs; nextPutAll: ' totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: 'ms ('; print: fullGCTime / elapsedMilliseconds * 100 maxDecimalPlaces: 3; nextPutAll: '% elapsed time)'. fullGCs = 0 ifFalse: [str nextPutAll: ', avg '; print: fullGCTime / fullGCs maxDecimalPlaces: 3; nextPutAll: 'ms']. str cr. str nextPutAll: (self amOnSpur ifTrue: [' scavenges '] ifFalse: [' incr ']); print: incrGCs; nextPutAll: ' totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: 'ms ('; print: incrGCTime / elapsedMilliseconds * 100 maxDecimalPlaces: 3; nextPutAll: '% elapsed time)'. incrGCs = 0 ifFalse: [str nextPutAll:', avg '; print: incrGCTime / incrGCs maxDecimalPlaces: 3; nextPutAll: 'ms']. str cr. str nextPutAll: ' tenures '; nextPutAll: tenureCount asStringWithCommas. tenureCount = 0 ifFalse: [str nextPutAll: ' (avg '; print: (incrGCs / tenureCount) asInteger; nextPutAll: ' GCs/tenure)']. str cr. str nextPutAll: ' root table '; nextPutAll: rootOverflows asStringWithCommas; nextPutAll:' overflows'. str cr. (gcStatsArray size >= 63 and: [(gcStatsArray at: 63) isInteger]) ifTrue: [| numCompactions compactionMsecs | str cr; nextPutAll: '**Compiled Code Compactions**'; cr. numCompactions := gcStatsArray at: 62. compactionMsecs := gcStatsArray at: 63. str tab; print: numCompactions; nextPutAll: ' totalling '; nextPutAll: compactionMsecs asStringWithCommas; nextPutAll: 'ms ('; print: compactionMsecs / elapsedMilliseconds * 100 maxDecimalPlaces: 3; nextPutAll: '% elapsed time)'. numCompactions = 0 ifFalse: [str nextPutAll: ', avg '; print: compactionMsecs / numCompactions maxDecimalPlaces: 3; nextPutAll: 'ms']. str cr]. gcStatsArray size >= 61 ifTrue: [str cr; nextPutAll: '**Events**'; cr. (56 to: 61) with: #('Process switches' 'ioProcessEvents calls' 'Interrupt checks' 'Event checks' 'Stack overflows' 'Stack page divorces') do: [:index :eventName| | value n | value := gcStatsArray at: index. n := 22 - eventName size // 4 + 1. str nextPutAll: eventName; tab: n; print: value; nextPutAll: ' ('; print: (value * 1000 / elapsedMilliseconds) rounded; nextPutAll: ' per second)'; cr]]! |
Free forum by Nabble | Edit this page |