Following up on FStarLang/FStar#2757...
@mtzguido you showed in FStarLang/FStar#2734 how to monitor resource usage throughout the Everest build... including in F* and HACL*. Can we make this a regular feature, say, as part of the Everest upgrade CI job, and report very prominently the top files for memory consumption and/or time?
Rationale.
We have had a number of performance regressions over the past few months (FStarLang/FStar#2757, hacl-star/hacl-star#541, hacl-star/hacl-star#539) and most of these are detected by accident, after the fact. (For instance, because we start having OOMs on HACL builds, or because I notice builds are starting to take much longer in Slack notifications, or because I keep an eye on my local build and notice some file taking an insane amount of time...)
This isn't super productive, and this prevents the F* team from having good feedback on the impact of their changes.
Concrete proposal.
I suggest adding a $(RUNLIM) variable in the HACL* build. Then, the Everest script exports RUNLIM="runlim -o $@.runlim" so that the HACL* build collects the desired output. And then @mtzguido, your script can be used to report on the memory (or time) usage.
What do you think? CCing @tahina-pro for the Everest script part.
Thanks,
Jonathan
Following up on FStarLang/FStar#2757...
@mtzguido you showed in FStarLang/FStar#2734 how to monitor resource usage throughout the Everest build... including in F* and HACL*. Can we make this a regular feature, say, as part of the Everest upgrade CI job, and report very prominently the top files for memory consumption and/or time?
Rationale.
We have had a number of performance regressions over the past few months (FStarLang/FStar#2757, hacl-star/hacl-star#541, hacl-star/hacl-star#539) and most of these are detected by accident, after the fact. (For instance, because we start having OOMs on HACL builds, or because I notice builds are starting to take much longer in Slack notifications, or because I keep an eye on my local build and notice some file taking an insane amount of time...)
This isn't super productive, and this prevents the F* team from having good feedback on the impact of their changes.
Concrete proposal.
I suggest adding a
$(RUNLIM)variable in the HACL* build. Then, the Everest script exports RUNLIM="runlim -o $@.runlim" so that the HACL* build collects the desired output. And then @mtzguido, your script can be used to report on the memory (or time) usage.What do you think? CCing @tahina-pro for the Everest script part.
Thanks,
Jonathan