[Cuis-dev] Jitter source during benchmarks

Martin McClure martin at hand2mouse.com
Tue May 12 14:05:18 PDT 2026


Hi Nico,

I would definitely suspect GC. You've already eliminated 
full/incremental GC. Does Cuis keep statistics on when scavenges are 
done? It's a sub-millisecond difference between the peaks. ~700 
microseconds seems like maybe a bit long for a scavenge, but not 
unbelievable.

To eliminate memory allocation or GC effects, you could try running a 
full GC between each repetition of the test and see whether there is 
still a bimodal distribution.

Regards,

-Martin

On 5/12/26 12:17 PM, Nicolás Papagna Maldonado via Cuis-dev wrote:
> Hi folks,
>
> I'm in the process of doing performance benchmarks of my Code Coverage 
> tool for my thesis, and I've encountered something interesting while 
> measuring the test execution times of the Aconcagua package.
>
> *Observation:*
> When running the Aconcagua test suite 150 times in a clean image, the 
> execution times are not normally distributed. Instead, they fall into 
> two distinct "modes":
>
> image.png
> A Base Mode (~6.28 ms): Representing roughly 72% of the iterations.
> A Spike Mode (~7.0 ms): Representing roughly 28% of the iterations.
>
> As the next plot shows, the spikes are not random; they seem to be 
> kind-of deterministic (roughly every 4th iteration).
> I think these perturbations are visible because I'm taking very small 
> measurements (~6.28 ms).
> image.png
>
> *Question:*
> I am trying to isolate whether this "heartbeat" is originating from 
> within the Cuis image or the VM/OS layer (I'm thinking of VM 
> timer/events, maybe UI timers?)
> Does anyone know what could be causing this?
> Are there any known events that run at this particular frequency?
>
> I repeated the experiment a couple of times and the perturbations are 
> consistent (in terms of ms and frequency).
>
> *Methodology:*
>
>   * Measurements were taken in batches of 50 test runs.
>   * Each batch was run in a fresh image, waiting 2 minutes for the VM
>     to stabilize Cuis code.
>   * 10 warmup runs were done and discarded before measuring test run
>     times.
>   * Measurements were taken using Time primHighResClock and converted
>     to ms using Time highResTimerTicksPerMillisecond.
>   * VM stats were collected before and after measurements. A full GC
>     was run before taking measurements.
>   * No GC activity was observed while measuring the tests run (VM
>     stats report no full nor incremental GCs).
>   * The test suite was created and run from a workspace
>
> *Cuis environment:*
>
>   * Cuis Smalltalk commit:
>     https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/commit/b221722348cc46ebb9f5d9f3a057a3f361aa3d55
>   * Code Coverage commit:
>     https://github.com/npapagna/cuis-code-coverage/commit/db19de02250a3fd50dfc4e0b4d0893b656e31e9b
>   * Aconcagua commit:
>     https://github.com/Cuis-Smalltalk/Measures/commit/05aa02aada64f7b64898a5e1452ae8fb76f79427
>
> *Machine environment:*
>
>   * Model Name: MacBook Pro
>   * Model Identifier: MacBookPro18,3
>   * Model Number: MKGR3LL/A
>   * Chip: Apple M1 Pro
>   * Total Number of Cores: 8 (6 Performance and 2 Efficiency)
>   * Memory: 16 GB
>   * System Firmware Version: 13822.81.10
>   * OS Loader Version: 13822.81.102
>   * APPLE SSD AP0512R (NVMe, avg read 5671 MB/s, avg write 5670 MB/s)
>   * macOs 26.3 (25D125)
>   * A dedicated fresh profile was created for the benchmarks
>     (indexing, time machine, screen lock/saver, display shutdown,
>     bluetooth and wifi disabled).
>
> Thanks in advance,
> Nico PM
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20260512/20e43532/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 48058 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20260512/20e43532/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 175232 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20260512/20e43532/attachment-0003.png>


More information about the Cuis-dev mailing list