tools.memory: experimenting with some GC event data mining

db4
Slava Pestov 2009-10-27 16:31:45 -05:00
parent 21f1fe7aaf
commit 028a7be4d6
1 changed files with 50 additions and 2 deletions

View File

@ -4,7 +4,7 @@ USING: kernel sequences arrays generic assocs io math
namespaces parser prettyprint strings io.styles words namespaces parser prettyprint strings io.styles words
system sorting splitting grouping math.parser classes memory system sorting splitting grouping math.parser classes memory
combinators fry vm specialized-arrays accessors continuations combinators fry vm specialized-arrays accessors continuations
classes.struct ; classes.struct generalizations ;
SPECIALIZED-ARRAY: gc-event SPECIALIZED-ARRAY: gc-event
IN: tools.memory IN: tools.memory
@ -95,4 +95,52 @@ PRIVATE>
: collect-gc-events ( quot -- events ) : collect-gc-events ( quot -- events )
enable-gc-events [ ] [ disable-gc-events drop ] cleanup enable-gc-events [ ] [ disable-gc-events drop ] cleanup
disable-gc-events byte-array>gc-event-array ; disable-gc-events byte-array>gc-event-array ; inline
: generation-sizes-before ( events -- sizes )
[
{
[ start-time>> ]
[ nursery-size-before>> ]
[ aging-size-before>> ]
[ tenured-size-before>> ]
[ code-size-before>> ]
} cleave 5 narray
] { } map-as ;
: generation-sizes-after ( events -- sizes )
[
{
[ start-time>> ]
[ nursery-size-after>> ]
[ aging-size-after>> ]
[ tenured-size-after>> ]
[ code-size-after>> ]
} cleave 5 narray
] { } map-as ;
: reclaimed-space ( events -- sizes )
[
[ start-time>> ] [
{
[ [ nursery-size-before>> ] [ nursery-size-after>> ] bi - ]
[ [ aging-size-before>> ] [ aging-size-after>> ] bi - ]
[ [ tenured-size-before>> ] [ tenured-size-after>> ] bi - ]
[ [ code-size-before>> ] [ code-size-after>> ] bi - ]
} cleave
+ + +
] bi 2array
] { } map-as ;
: allocated-space ( events -- sizes )
2 <sliced-clumps> [
[ second start-time>> ] [
{
[ [ second nursery-size-before>> ] [ first nursery-size-after>> ] bi - ]
[ [ second aging-size-before>> ] [ first aging-size-after>> ] bi - ]
[ [ second tenured-size-before>> ] [ first tenured-size-after>> ] bi - ]
[ [ second code-size-before>> ] [ first code-size-after>> ] bi - ]
} cleave
+ + +
] bi 2array
] { } map-as ;