- Launch the image with large code size and a large eden size to avoid code compactions and garbage collections. They add noise to the measurements.
$ vm --codeSize=20M --edenSize=100M Pharo.image --interactive
- Load the code using Iceberg
- Tune the GC to minimize noise
Metacello new
baseline: 'VMTunning';
repository: 'github://pharo-project/pharo-vm-tunning';
load.
GCConfiguration readFromVM
growthHeadroom: 100 * 1024 * 1024;
fullGCRatio: 1;
shrinkThreadshold: 1024;
writeToVM.
ICSampler new
sample: [ 'Microdown-Tests' asPackage testSuite run ]
period: 20 milliSeconds.
ICSampler new
sample: [
'Roassal3-Global-Tests' asPackage testSuite run.
'Roassal3-Global-Tests' asPackage testSuite run ]
period: 200 milliSeconds.
The ICSampler
class contains several useful methods for querying and plotting.
chartSampleCount
plots the number of methods that are JIT compiled per sample
chartCallsiteTypeCount
charts the the number of mono/poly/mega-morphic callsits per sample
Other useful methods are in the query
protocol.