You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
02:47:26 + DEPOT_TOOLS_DIR=/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/_depot_tools02:47:26 + PATH=/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/_depot_tools:/home/iojs/build/workspace/node-test-commit-v8-linux/depot_tools:/home/iojs/venv/bin:/home/iojs/nghttp2/src:/home/iojs/wrk:/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin tools/dev/v8gen.py x64.release --no-goma02:47:26 02:47:26 Hint: You can raise verbosity (-vv) to see the output of failed commands.02:47:26 02:47:26 Traceback (most recent call last):02:47:26 File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 309, in <module>02:47:26 sys.exit(gen.main())02:47:26 File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 303, in main02:47:26 return self._options.func()02:47:26 File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 162, in cmd_gen02:47:26 self._call_cmd([02:47:26 File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 211, in _call_cmd02:47:26 output = subprocess.check_output(02:47:26 File "/usr/lib/python3.10/subprocess.py", line 421, in check_output02:47:26 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,02:47:26 File "/usr/lib/python3.10/subprocess.py", line 526, in run02:47:26 raise CalledProcessError(retcode, process.args,02:47:26 subprocess.CalledProcessError: Command '['/usr/bin/python3', '-u', 'tools/mb/mb.py', 'gen', '-f', 'infra/mb/mb_config.pyl', '-m', 'developer_default', '-b', 'x64.release', 'out.gn/x64.release']' returned non-zero exit status 1.02:47:26 make: *** [Makefile:303: v8] Error 1
Logging into the machine and running the failing command with -vv (as suggested):
iojs@test-hetzner-ubuntu2204-x64-1:~/build/workspace/node-test-commit-v8-linux/deps/v8$ PATH=/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/_depot_tools:/home/iojs/build/workspace/node-test-commit-v8-linux/depot_tools:/home/iojs/venv/bin:/home/iojs/nghttp2/src:/home/iojs/wrk:/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin tools/dev/v8gen.py x64.release --no-goma -vv################################################################################/usr/bin/python3 -u tools/mb/mb.py gen -f infra/mb/mb_config.pyl -m developer_default -b x64.release out.gn/x64.release Writing """\ dcheck_always_on = false is_debug = false target_cpu = "x64" """ to /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/out.gn/x64.release/args.gn. /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/buildtools/linux64/gn gen out.gn/x64.release --check -> returned 1 ERROR at //build/config/linux/pkg_config.gni:104:17: Script returned non-zero exit code. pkgresult = exec_script(pkg_config_script, args, "json") ^---------- Current dir: /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/out.gn/x64.release/ Command: python3 /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/build/config/linux/pkg-config.py -s /home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/build/linux/debian_bullseye_amd64-sysroot -a x64 glib-2.0 gmodule-2.0 gobject-2.0 gthread-2.0 Returned 1. stderr: Traceback (most recent call last): File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/build/config/linux/pkg-config.py", line 247, in <module> sys.exit(main()) File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/build/config/linux/pkg-config.py", line 142, in main prefix = GetPkgConfigPrefixToStrip(options, args) File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/build/config/linux/pkg-config.py", line 80, in GetPkgConfigPrefixToStrip prefix = subprocess.check_output([options.pkg_config, File "/usr/lib/python3.10/subprocess.py", line 421, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.10/subprocess.py", line 503, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.10/subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config' See //build/config/linux/BUILD.gn:58:3: whence it was called. pkg_config("glib") { ^------------------- See //build/config/compiler/BUILD.gn:300:18: which caused the file to be included. configs += [ "//build/config/linux:compiler" ] ^------------------------------ GN gen failed: 1Traceback (most recent call last): File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 309, in <module> sys.exit(gen.main()) File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 303, in main return self._options.func() File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 162, in cmd_gen self._call_cmd([ File "/home/iojs/build/workspace/node-test-commit-v8-linux/deps/v8/tools/dev/v8gen.py", line 211, in _call_cmd output = subprocess.check_output( File "/usr/lib/python3.10/subprocess.py", line 421, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.10/subprocess.py", line 526, in run raise CalledProcessError(retcode, process.args,subprocess.CalledProcessError: Command '['/usr/bin/python3', '-u', 'tools/mb/mb.py', 'gen', '-f', 'infra/mb/mb_config.pyl', '-m', 'developer_default', '-b', 'x64.release', 'out.gn/x64.release']' returned non-zero exit status 1.iojs@test-hetzner-ubuntu2204-x64-1:~/build/workspace/node-test-commit-v8-linux/deps/v8$
Looking at the other nearform benchmarking machines I see a considerable amount of manual package installations that are outside of ansible's setup.
There's at least 220 packages that have been manually installed.
Theres also the likelyhood that I was supposed to configure ansible differently to set up these machines beyond what I understood.
I attempted to add the 'is_benchmark' = true to add the benchmark role as I see that pkg-config is installed that way, but some of the other packages in that role have been dropped from ubuntu and that role hasnt been updated for six years, so its probably got some stale packages in there.
I suspect it is the is_benchmarking variable that installed those packages, and that is has bit rotted. For example, pkg-config (the missing thing in #3657 (comment)) is listed
I attempted to add the 'is_benchmark' = true to add the benchmark role as I see that pkg-config is installed that way, but some of the other packages in that role have been dropped from ubuntu and that role hasnt been updated for six years, so its probably got some stale packages in there.
Adding pkg-config this way has allowed the V8 CI to build and run tests.
For the missing perf, maybe we need to add the Hetzner machines to:
That intel tag was what was being used to target the Nearform intel donated machines. We should definitely change that to target the Hetzner ones now.
Adding pkg-config this way
How shall we approach getting these machines into a stable usable state going forward? I can continue to adjust which packages are installed as part of the ansible setup, but I don't want to inadvertently step on or undo any work that anybody else is doing. (Though I also lack any background in what the jobs do/accomplish)
@ryanaslett have you added the linux-perf role? That might be all that is needed to get the v8 jobs running as well as they were before on the machines. @richardlau is that your expectation?
@ryanaslett if you are updating the ansible scripts, is there a section which is specific to the benchmark machines that we can add the creation of the /w directory owned by iojs with group iojs?
@ryanaslett if you are updating the ansible scripts, is there a section which is specific to the benchmark machines that we can add the creation of the /w directory owned by iojs with group iojs?
Thats sort of what I was asking in #3657 (comment) - mostly who should be doing this.
I left a comment in nodejs/performance#157 -- I think the script is currently limiting the benchmarks to a single CPU, which is probably not the intent 🙂. See nodejs/node#52233 (comment). Perhaps the script could parameterize the --set parameter and then we could set it in the Jenkins job.
Activity
targos commentedon Mar 21, 2024
@mcollina is it ok for performance measurements to have a CPU with a mix of non-identical cores?
mcollina commentedon Mar 21, 2024
It should be possible to schedule certain processes only on a subset of the cores with
taskset.This should be part of the testing phase.
ryanaslett commentedon Mar 26, 2024
These machines have been provisioned and added to Jenkins with the same labels/configs as the former nearform machines.
Next steps: Can somebody with permssions can kick off a benchmarking jobs and some v8 builds to verify that all is working as intended?
richardlau commentedon Mar 26, 2024
I've marked the two Nearform machines offline in Jenkins and started a V8 build which is running on test-hetzner-ubuntu2204-x64-1:
https://ci.nodejs.org/job/node-test-commit-v8-linux/5876/nodes=benchmark-ubuntu2204-intel-64,v8test=v8test/
richardlau commentedon Mar 26, 2024
This has failed:
Logging into the machine and running the failing command with
-vv(as suggested):ryanaslett commentedon Mar 26, 2024
Looking at the other nearform benchmarking machines I see a considerable amount of manual package installations that are outside of ansible's setup.
There's at least 220 packages that have been manually installed.
Theres also the likelyhood that I was supposed to configure ansible differently to set up these machines beyond what I understood.
I attempted to add the 'is_benchmark' = true to add the benchmark role as I see that pkg-config is installed that way, but some of the other packages in that role have been dropped from ubuntu and that role hasnt been updated for six years, so its probably got some stale packages in there.
List of missing packages
Take a look at the above list and we should decide if we need to update ansible to include some of this setup or not.
richardlau commentedon Mar 26, 2024
I suspect it is the
is_benchmarkingvariable that installed those packages, and that is has bit rotted. For example,pkg-config(the missing thing in #3657 (comment)) is listedbuild/ansible/roles/benchmarking/vars/main.yml
Line 10 in 51ad778
We should probably add
pkg-configtobuild/ansible/roles/build-test-v8/tasks/partials/ubuntu2204.yml
Line 9 in 51ad778
I'm less familiar with what is needed to run the benchmarks.
richardlau commentedon Mar 26, 2024
Adding pkg-config this way has allowed the V8 CI to build and run tests.
mainbranch failed due to Brokentest/v8-updates/test-linux-perf-loggernode#51308: https://ci.nodejs.org/job/node-test-commit-v8-linux/5878/nodes=benchmark-ubuntu2204-intel-64,v8test=v8test/consoleFullperf: https://ci.nodejs.org/job/node-test-commit-v8-linux/5879/nodes=benchmark-ubuntu2204-intel-64,v8test=v8test/consoleNeither encountered the networking issues we had with the Nearform hosted benchmark machines (🎉).
For the missing
perf, maybe we need to add the hetzner machines to:build/ansible/playbooks/jenkins/worker/create.yml
Lines 74 to 77 in 51ad778
ryanaslett commentedon Mar 26, 2024
That intel tag was what was being used to target the Nearform intel donated machines. We should definitely change that to target the Hetzner ones now.
How shall we approach getting these machines into a stable usable state going forward? I can continue to adjust which packages are installed as part of the ansible setup, but I don't want to inadvertently step on or undo any work that anybody else is doing. (Though I also lack any background in what the jobs do/accomplish)
mhdawson commentedon Mar 26, 2024
Ran the benchmark job which fails - https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1498/
Looks like there may be a directory missing. That may have been created manually as these machines were set up a long time ago.
mhdawson commentedon Mar 26, 2024
@ryanaslett have you added the linux-perf role? That might be all that is needed to get the v8 jobs running as well as they were before on the machines. @richardlau is that your expectation?
mhdawson commentedon Mar 26, 2024
manually creating the directory /w owned by iojs and with group iojs has let the benchmark run get further
mhdawson commentedon Mar 26, 2024
@ryanaslett if you are updating the ansible scripts, is there a section which is specific to the benchmark machines that we can add the creation of the /w directory owned by iojs with group iojs?
mhdawson commentedon Mar 26, 2024
Job to see if perf job runs ok after adding the /w directory - https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1499/
ryanaslett commentedon Mar 26, 2024
Thats sort of what I was asking in #3657 (comment) - mostly who should be doing this.
28 remaining items
richardlau commentedon Apr 8, 2024
I left a comment in nodejs/performance#157 -- I think the script is currently limiting the benchmarks to a single CPU, which is probably not the intent 🙂. See nodejs/node#52233 (comment). Perhaps the script could parameterize the
--setparameter and then we could set it in the Jenkins job.rluvaton commentedon Apr 8, 2024
Done: nodejs/performance#158
thisalihassan commentedon Apr 8, 2024
@rluvaton btw we can use
nproccommand to max cores instead of deafult0-11in the scriptrluvaton commentedon Apr 8, 2024
targos commentedon Apr 8, 2024
nprocdoesn't know the difference between performance and efficiency cores.mcollina commentedon Apr 9, 2024
@rluvaton based on #3657 (comment), this does not seem to be working as quite a lot of results are NaN.
rluvaton commentedon Apr 9, 2024
This was before my use of 0-11 cpu, should it change anything?
mcollina commentedon Apr 9, 2024
Not sure what's the problem but there was no analysis of the result.
rluvaton commentedon Apr 9, 2024
If this is still happening after the change of 0-11 CPU I will revert it...
Currently the CI is locked
rluvaton commentedon Apr 10, 2024
as it is still not working, reverted
@thisalihassan can you please take a look why all the NaN?
thisalihassan commentedon Apr 10, 2024
@rluvaton sure also where can I see the logs?
rluvaton commentedon Apr 10, 2024
You have this example: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1514/consoleFull
but you can run locally
richardlau commentedon Apr 10, 2024
FWIW there's a difference in output, e.g.
https://ci.nodejs.org/job/benchmark-node-micro-benchmarks/1510/console
21:42:04 "new","test_runner/suite-tests.js","concurrency='no' testType='async' testsPerSuite=1000 numberOfSuites=100",34812.26643390852,2.872550691vs
https://ci.nodejs.org/job/benchmark-node-micro-benchmarks/1513/console
13:39:14 test_runner/suite-tests.js concurrency="no" testType="async" testsPerSuite=1000 numberOfSuites=100: 29,112.48474928658i.e. as if the
"new",(or"old",) field and opening"of the second field is missing.rluvaton commentedon Apr 10, 2024
also found this:
thisalihassan commentedon Apr 10, 2024
@rluvaton nodejs/node#52456 "ipc" I untintentially removed this in the spawn stdio, that's why child.on message wasn't listening events
in Fork IPC is established by default but in spawn it is not established by default hence listener wasn't working