Great work Matti!

Jacob

måndag 1 juni 2026 08:40:48 centraleuropeisk sommartid skrev  matti picus via 
pypy-dev:
> Hi. Here is an update about all the churn you might have been seeing
> in the github/pypy org and around speed.pypy.org.
> 
> Maciej (and baroquesoftware) have been sponsoring our benchmarker
> runner for quite a while now. It runs on a xenial64 chroot, which
> provides gcc5.4.1. This matches our buildbot linux infrastructure
> which is running in docker images based on manylinux2014, also using
> gcc5.4.1. The buildbot master is also running on a baroquesoftware
> machine, running buildbot 0.8.8 which is quite old. It uses python2.7
> and has a heavily specialized summary view.
> 
> Our 6 remaining buildbot workers are also quite old.
> - The linux64 machine is one donated by King's college (thanks to them
> for that), it has been running for quite a number of years now with
> few interruptions.
> - The linux32 worker runs on the benchmarker machine with a lock to
> prevent it from running when the benchmarks run.
> - The macos workers run on a mac-mini with an M1 processor in my
> house, both the arm64 and x86_64 run together.
> - The windows64 worker runs in a windows 10 VM on my desktop machine.
> 
> Maciej and baroquesoftware have become less involved in the project.
> That's fair, it's open source and neither generating much income (to
> say the least) nor actively getting new features. It is time to update
> our software and hardware stack, assuming the project is going to
> continue to function.
> 
> I came up with a plan to:
> - set up a new benchmarking machine (done)
> - move buildbot master off baroquesoftware machines (done)
> - move the 32-bit buildbot worker onto the new benchmarking machine (TBD)
> - try to use the github actions we already have as a replacement for
> buildbot testing, which will save updating all the worker machines (in
> progress)
> - Update all the software stack to manylinux2_28 which uses gcc14 (in
> progress).
> 
> I have set up a benchmarker2: an AMD Ryzen 5 3600 6-Core machine. The
> advantage of this zen2 machine, besides being less expensive than zen
> 5 machines (since it is not the latest and greatest), is that the CPU
> has two separate chiplets (CCD). I can isolate 3 cores for
> benchmarking, and still run buildbot master and the 32-bit buildbot
> worker on it (keeping the existing locking mechanism).
> 
> I also set up a new flask-based service
> https:://build-summary.pypy.org[0], that replicates the buildbot
> summary page pypy developed on top of buildbot. This is needed for two
> reasons: to display the github action test results in the way PyPy
> developers are used to, and to allow us to move forward past buildbot
> 0.8.8. Newer versions of buildbot do not allow exposing the twistd
> endpoints we used for the customized summary. The new service is live,
> as is benchmarker2.
> 
> In order to update the dockers, I created a pypy-ci repo[1] with
> manylinux2_28-based dockerfiles.
> 
> I started a pypy branch[2] to do a full rpython run on the github
> workers with the newer os and compiler versions. The branch required
> updating rpython itself to run tests with gcc14. The newer compiler is
> more picky about function definitions, and the binutils assembly is
> slightly different, so some fixes were needed. The windows machine on
> github actions is _much_ faster than the vm. The entire run (split
> over 5 jobs, and 4 parallel tests running on each job) takes around 30
> minutes for each of the 6 machines. You can see the branch summary
> results on the new service [4]. The service is still a bit of a
> work-in-progress, the comparison-to-main feature may be too noisy.
> Note the coding to report the source of the logs: '*' for github
> actions and '+' for buildbot [5].
> 
> I also hacked at speed.pypy.org to better display the two benchmarking
> machines. The comparison page and timeline page now both allow
> displaying across more than one environment, so you can see that the
> new benchmarker2 machine is slightly faster than the older benchmarker
> machine [3]. Results would be more distinct but I disabled speed
> "turbo" on benchmarker2 to keep the results more consistent.
> 
> Besides updating to get security and other benefits, my real
> motivation for all this churn has been to try to improve
> cold-interpreter (non-JIT) performance. Carl and I recently worked on
> computed gotos and inlining stack overflow checks, but they did not
> seem to do much. Moving to gcc 14 does not seem to have changed that
> either. Making `lst = [None] * size` faster[6] seemed promising from
> the microbechmark, but the full benchmarking comparison shows, as with
> the other changes, a bit faster and a bit slower [7]. In spite of all
> these "meh" results, I will try to keep pushing on performance, I
> still believe we should be able to unlock some enhancements. Any ideas
> for things to try are welcome.
> Matti
> 
> [0] https://build-summary.pypy.org/about
> [1] https://github.com/pypy/pypy-ci
> [2] https://github.com/pypy/pypy/pull/5488, the results can be seen
> [3]
> http://127.0.0.1:8000/comparison/?exe=22:L:py3.11&ben=all&env=3,4&hor=true&;
> bas=22:L:py3.11@4&chart=normal+bars [4]
> https://build-summary.pypy.org/summary?branch=win-rpython
> [5]
> https://build-summary.pypy.org/summary?revision=3e97da6d7a91&revision=89d59
> 559f278 [6] https://github.com/pypy/pypy/pull/5469
> [7]
> https://speed.pypy.org/comparison/?exe=8:L:main,8:L:memset&ben=all&env=4&ho
> r=true&bas=8:L:main&chart=normal+bars
> _______________________________________________
> pypy-dev mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3//lists/pypy-dev.python.org
> Member address: [email protected]




_______________________________________________
pypy-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/pypy-dev.python.org
Member address: [email protected]

Reply via email to