Allow specifying instruction set
Description
Kernel supports few instruction sets [1], and the default one (which is
apparently being used at the moment in falco) is going to be the
generic or v1, which has certain limitations and requires
workarounds. It's possible to instruct llc to search the latest
supported instruction set via -mcpu parameter, which generally
speaking should result in more compact and potentially more performant
generated instructions for the same code. For the support table see
great blog post [2] about the topic. The gist for the support is:
v2: Linux v4.14 [3], LLVM v6.0 [4] v3: Linux v5.1 [5], LLVM [6]
Probing is working via performing bpf syscall with various instruction sets and figuring out maximum supported version based on the results. Which means it would work only for the build host, so we need to allow pinning it precisely if needed.
Checklist
- [ ] Investigated and inspected CI test results
- [ ] Updated documentation accordingly
Testing Performed
Local testing with instruction set v2.
@erthalion: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:
| Test name | Commit | Details | Required | Rerun command |
|---|---|---|---|---|
| ci/prow/ubuntu-1804-lts-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test ubuntu-1804-lts-ebpf-integration-tests |
| ci/prow/sles-15-kernel-module-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test sles-15-kernel-module-integration-tests |
| ci/prow/cos-85-lts-kernel-module-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-85-lts-kernel-module-integration-tests |
| ci/prow/cos-dev-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-dev-ebpf-integration-tests |
| ci/prow/cos-stable-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-stable-ebpf-integration-tests |
| ci/prow/sles-12-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test sles-12-ebpf-integration-tests |
| ci/prow/cos-85-lts-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-85-lts-ebpf-integration-tests |
| ci/prow/cos-beta-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-beta-ebpf-integration-tests |
| ci/prow/cos-89-lts-kernel-module-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-89-lts-kernel-module-integration-tests |
| ci/prow/ubuntu-pro-1804-lts-kernel-module-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test ubuntu-pro-1804-lts-kernel-module-integration-tests |
| ci/prow/ubuntu-pro-1804-lts-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test ubuntu-pro-1804-lts-ebpf-integration-tests |
| ci/prow/cos-89-lts-ebpf-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test cos-89-lts-ebpf-integration-tests |
| ci/prow/rhel-sap-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test rhel-sap-integration-tests |
| ci/prow/rhel-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test rhel-integration-tests |
| ci/prow/ubuntu-os-integration-tests | 74dcb1d53cd083968e2cc90093027c82b5ef3f70 | link | true | /test ubuntu-os-integration-tests |
Full PR test history. Your PR dashboard.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.
COLLECTOR_TAG=3.12.x-26-g5adabbe03e
COLLECTOR_BUILDER_TAG=cache
Results for Performance Benchmarks on build #
| Kernel | Method | Without Collector Time (secs) | With Collector Time (secs) | Baseline median (secs) | Collector median (secs) | PValue |
|---|---|---|---|---|---|---|
| rhel.rhel-7 | ebpf | 227.502 | 268.926 | 163.24 | 203.43 | :green_circle: |
| rhel.rhel-7 | module | 99.216 | 118.99 | 184.62 | 210.4 | :green_circle: |
| rhel.rhel-8 | ebpf | 235.6 | 245.594 | 200.85 | 211.04 | :green_circle: |
| rhel.rhel-8 | module | 234.81 | 257.917 | 174.47 | 196.72 | :green_circle: |
| ubuntu-os.ubuntu-1804-lts | ebpf | 250.682 | 230.901 | 189.23 | 215.86 | :red_circle: |
| ubuntu-os.ubuntu-1804-lts | module | 223.94 | 265.805 | 183.83 | 216.45 | :green_circle: |
| ubuntu-os.ubuntu-2004-lts | ebpf | 276.051 | 266.852 | 234.73 | 231.91 | :green_circle: |
| ubuntu-os.ubuntu-2004-lts | module | 248.769 | 271.234 | 224.59 | 239.44 | :green_circle: |
| ubuntu-os.ubuntu-2204-lts | ebpf | 248.663 | 247.724 | 213.26 | 226.83 | :green_circle: |
| ubuntu-os.ubuntu-2204-lts | module | 235.638 | 272.162 | 215.97 | 240.73 | :green_circle: |
@erthalion Is this still relevant?
@robbycochran it is, in the sense that it still could be applied to core_bpf, but has to be evaluated again.