build
build copied to clipboard
Install perf matching the kernel version on the benchmark machines
Refs: https://github.com/nodejs/node/issues/50079#issuecomment-1752097632
I think that might be the cause behind the v8-updates/test-linux-perf failures of the recent V8 update. Currenly https://github.com/nodejs/build/blob/main/ansible/roles/linux-perf/tasks/main.yml pulls the source from the most recent commit from https://github.com/torvalds/linux.git which can be too far ahead compared to the kernel version on the machines and result in breakages.
Some suggestions:
- Download from git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
- Download the branch implied by
uname -r(maybe just the major and the minor version is enough, e.g.5.15on the benchmark machines, I am not sure how to do that in ansible)
It would be great if someone more familiar with ansible can do these changes to the script and apply them on the benchmark machines (after removing the existing perf installations).
I've deployed https://github.com/nodejs/build/pull/3665 onto the new Hetzner machines (replacing the Nearform ones).
This has installed a matching version of perf to the kernel version:
root@test-hetzner-ubuntu2204-x64-1 ~ # uname -r
5.15.0-100-generic
root@test-hetzner-ubuntu2204-x64-1 ~ # perf -v
perf version 5.15.g8bb7eca972ad
root@test-hetzner-ubuntu2204-x64-1 ~ #
but the V8 tests are still failing even with the matching version of perf:
- v18.x-staging: https://ci.nodejs.org/job/node-test-commit-v8-linux/5890/nodes=benchmark-ubuntu2204-intel-64,v8test=v8test/console
- main: https://ci.nodejs.org/job/node-test-commit-v8-linux/5889/nodes=benchmark-ubuntu2204-intel-64,v8test=v8test/console
I think we can close this now. We did get the version of perf installed to match the kernel version in https://github.com/nodejs/build/pull/3665, although that didn't fix the tests. https://github.com/nodejs/node/issues/50079 exists to track further work (if needed) for the tests, but IIRC they were turned off in favour of other working tests to cover the functionality.