diff --git a/.zuul.d/jobs.yaml b/.zuul.d/jobs.yaml index b9cf040ab..559a32c3e 100644 --- a/.zuul.d/jobs.yaml +++ b/.zuul.d/jobs.yaml @@ -79,6 +79,7 @@ Base job for DIB functional tests, which build and boot a node under nodepool, using source versions of dependencies such as nodepool, dib, openstacksdk and glean. + pre-run: playbooks/dib-nodepool/node-information.yaml parent: nodepool-functional-container-openstack-siblings-base post-run: playbooks/dib-nodepool/collect-openstack-logs.yaml vars: diff --git a/playbooks/dib-nodepool/files/cpu-level.sh b/playbooks/dib-nodepool/files/cpu-level.sh new file mode 100644 index 000000000..a6c4c0cf9 --- /dev/null +++ b/playbooks/dib-nodepool/files/cpu-level.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +function report_cpu_flags() { + local flag + + for flag; do + ## Note, it's important to keep a trailing space + case " ${flags} " in + *" ${flag} "*) + echo " ${flag} Found" + ;; + *) + echo " ${flag} NOT Found" + ;; + esac + done +} + +data=$(< /proc/cpuinfo) +flags="" +flags=$(grep "^flags[[:space:]]*:" <<< "${data}" | head -n 1) +flags="${flags#*:}" +flags="${flags## }" + +echo "${flags}" + +echo "x86_64-v1" +report_cpu_flags lm cmov cx8 fpu fxsr mmx syscall sse2 +echo "x86_64-v2" +report_cpu_flags cx16 lahf_lm popcnt sse4_1 sse4_2 ssse3 +echo "x86_64-v3" +report_cpu_flags avx avx2 bmi1 bmi2 f16c fma abm movbe xsave +echo "x86_64-v4" +report_cpu_flags avx512f avx512bw avx512cd avx512dq avx512vl diff --git a/playbooks/dib-nodepool/node-information.yaml b/playbooks/dib-nodepool/node-information.yaml new file mode 100644 index 000000000..8bbbf9ac5 --- /dev/null +++ b/playbooks/dib-nodepool/node-information.yaml @@ -0,0 +1,16 @@ +- hosts: all + tasks: + - name: Copy the cpu-level script into place + copy: + src: cpu-level.sh + dest: /tmp/cpu-level.sh + mode: + - name: Collect CPU flags for node + command: bash /tmp/cpu-level.sh + # NOTE(tonyb): This is interesting as QEMU gains the ability to emuluate + # newer machine types for example 7.2 is needed for haswell. + - name: Collect QEMU version + ignore_errors: true + shell: |- + qemu-kvm --version + qemu-system-$(arch) --version \ No newline at end of file