GoogleCloudPlatform / GoogleCloudPlatform/PerfKitBenchmarker

RHEL9 doesn't ship libcrypt.so.1 by default and SPEC CPU2017 fails on AArch64

Open
#3,834 0 comments 0 reactions 1 assignee Claimed by @spencerghkim View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.