GoogleCloudPlatform / GoogleCloudPlatform/PerfKitBenchmarker
RHEL9 doesn't ship libcrypt.so.1 by default and SPEC CPU2017 fails on AArch64
- Dominant language
- Python
- Stars
- 2k
- Forks
- 562
- Avg merge
- 4h 55m
- Merged PRs (30d)
- 69
Description
Hey there,
As per $subject, while running SPECCPU 2017 on RHEL9 distros -Rocky Linux included- the SPEC CPU2017 fails with the following error
```
2022-10-21 13:26:23,758 c81af255 MainThread speccpu2017(1/1) ERROR Exception running benchmark
Traceback (most recent call last):
File "/root/PerfKitBenchmarker/perfkitbenchmarker/pkb.py", line 1309, in RunBenchmarkTask
RunBenchmark(spec_for_run, collector)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/pkb.py", line 1091, in RunBenchmark
DoPreparePhase(spec, detailed_timer)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/pkb.py", line 834, in DoPreparePhase
spec.BenchmarkPrepare(spec)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_benchmarks/speccpu2017_benchmark.py", line 142, in Prepare
vm_util.RunThreaded(_Prepare, vms)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/background_tasks.py", line 647, in RunThreaded
return RunParallelThreads(target_arg_tuples,
File "/root/PerfKitBenchmarker/perfkitbenchmarker/background_tasks.py", line 582, in RunParallelThreads
return _RunParallelTasks(
File "/root/PerfKitBenchmarker/perfkitbenchmarker/background_tasks.py", line 556, in _RunParallelTasks
raise parallel_exception_class(
perfkitbenchmarker.errors.VmUtil.ThreadException: The following exceptions occurred during parallel execution:
Exception occurred while calling _Prepare(34.141.185.198):
Traceback (most recent call last):
File "/root/PerfKitBenchmarker/perfkitbenchmarker/background_tasks.py", line 252, in Run
self.return_value = self.target(*self.args, **self.kwargs)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_benchmarks/speccpu2017_benchmark.py", line 147, in _Prepare
vm.Install('speccpu2017')
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_virtual_machine.py", line 1815, in Install
package.Install(self)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_packages/speccpu2017.py", line 85, in Install
vm.RemoteCommand('echo yes | {0}/cpu2017/install.sh'.format(
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_virtual_machine.py", line 1064, in RemoteCommand
return self.RemoteCommandWithReturnCode(*args, **kwargs)[:2]
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_virtual_machine.py", line 1080, in RemoteCommandWithReturnCode
return self.RemoteHostCommandWithReturnCode(*args, **kwargs)
File "/root/PerfKitBenchmarker/perfkitbenchmarker/linux_virtual_machine.py", line 1152, in RemoteHostCommandWithReturnCode
raise errors.VirtualMachine.RemoteCommandError(error_text)
perfkitbenchmarker.errors.VirtualMachine.RemoteCommandError: Got non-zero return code (1) executing echo yes | /scratch/cpu2017/install.sh
Full command: ssh -A -p 22 perfkit@34.141.185.198 -2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o Preferr
edAuthentications=publickey -o PasswordAuthentication=no -o ConnectTimeout=5 -o GSSAPIAuthentication=no -o ServerAliveInterval=30 -o ServerAliveCountMax=10 -i /root/tmp/pkb.t2a-altra/spec_cpu2017/1T/runs/c81af255/perfkitbenchmarker_keyfile -o ControlPath="/root/tmp/pkb.t2a-altra/spec_cpu2017/1T/runs/c81af255/ssh/%h" -o ControlMaster=auto -o ControlPersist=30m echo yes | /scratch/cpu2017/install.sh
STDOUT: SPEC CPU2017 Installation
Top of the CPU2017 tree is '/scratch/cpu2017'
Installing FROM /scratch/cpu2017
Installing TO /scratch/cpu2017
Is this correct? (Please enter 'yes' or 'no')
The following toolset is expected to work on your platform. If the
automatically installed one does not work, please re-run install.sh and
exclude that toolset using the '-e' switch.
The toolset selected will not affect your benchmark scores.
linux-aarch64 For 64-bit AArch64 systems running Linux.
Built with GCC 4.8.4 (Ubuntu/Linaro
4.8.4-2ubuntu1~14.04.1) on an HPE
Moonshot running Linaro v14.04.1 LTS.
=================================================================
Attempting to install the linux-aarch64 toolset...
Checking the integrity of your source tree...
Checksums are all okay.
Unpacking binary tools for linux-aarch64...
Checking the integrity of your binary tools...
Checksums are all okay.
Testing the tools installation (this may take a minute)
Error running runcpu tests. See /scratch/cpu2017/runcpu-test.linux-aarch64.out for details,
if no other toolsets install successfully.
Installation of linux-aarch64 aborted.
Error running runcpu tests. See the following file(s) for details about
tests that failed, if no other toolset installs successfully:
/scratch/cpu2017/runcpu-test.linux-aarch64.out
We do not appear to have working vendor-supplied binaries for your
architecture. You will have to compile the tool binaries by
yourself. Please read the file
/scratch/cpu2017/Docs/tools-build.html
for instructions on how you might be able to build them.
Please only attempt this as a last resort.
STDERR: tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
```
Checking the content of `/scratch/cpu2017/runcpu-test.linux-aarch64.out` I see the following message
```
specperl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
```
This is also officially reported by SPEC CPU2017
https://www.spec.org/cpu2017/Docs/faq.html#runcpu.04
Follows a possible patch to fix the problem
```
diff --git a/perfkitbenchmarker/linux_packages/speccpu2017.py b/perfkitbenchmarker/linux_packages/speccpu2017.py
index 6fdc5816..146f2773 100644
--- a/perfkitbenchmarker/linux_packages/speccpu2017.py
+++ b/perfkitbenchmarker/linux_packages/speccpu2017.py
@@ -89,3 +89,7 @@ def Install(vm):
def AptInstall(vm):
vm.InstallPackages('libjemalloc-dev libomp-dev')
Install(vm)
+
+def YumInstall(vm):
+ vm.InstallPackages('libxcrypt-compat')
+ Install(vm)
```
Could you please push this?
Contributor guide
Assessment
This issue has not been assessed yet.