Skip to content

Conversation

@eyalkoren
Copy link
Contributor

@eyalkoren eyalkoren commented Jul 4, 2022

Context: benchmarks script failing on new CI processor - https://apm-ci.elastic.co/blue/organizations/jenkins/apm-agent-java%2Fapm-agent-java-mbp/detail/main/285/pipeline:

CPU_MODEL='12th Gen Intel(R) Core(TM) i5-12500 '
...
Cannot determine base frequency for CPU model [12th Gen Intel(R) Core(TM) i5-12500 ]. Please adjust the build script.

Based on Intel's processor's spec.

@kuisathaverat Do you think a ci:benchmarks label to tell CI to run benchmarks for PRs would be useful?

BASE_FREQ="1.9GHz"
elif [ "${CPU_MODEL}" == "12th Gen Intel(R) Core(TM) i5-12500 " ]
then
CORE_INDEX=11
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the other types, it seems to count the effective threads rather than physical cores, but I am not sure

@eyalkoren
Copy link
Contributor Author

run benchmark tests

@ghost
Copy link

ghost commented Jul 4, 2022

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2022-07-05T18:39:44.993+0000

  • Duration: 50 min 6 sec

Test stats 🧪

Test Results
Failed 0
Passed 3052
Skipped 36
Total 3088

💚 Flaky test report

Tests succeeded.

🤖 GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

  • run benchmark tests : Run the benchmark tests.

  • run jdk compatibility tests : Run the JDK Compatibility tests.

  • run integration tests : Run the Agent Integration tests.

  • run end-to-end tests : Run the APM-ITs.

  • run windows tests : Build & tests on windows.

  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

@felixbarny
Copy link
Member

Why are the benchmarks suddenly executed on a new hardware? This would make any comparisons with past results meaningless.

@eyalkoren
Copy link
Contributor Author

Why are the benchmarks suddenly executed on a new hardware? This would make any comparisons with past results meaningless.

Does this mean we cannot upgrade? Or is it enough to manually compare now and start accumulating new history?

@felixbarny
Copy link
Member

felixbarny commented Jul 4, 2022

I suppose it doesn't mean that we can never upgrade but we should carefully review when doing so. For example, is the new worker a dedicated bare metal machine like the old one or is it a cloud VM that may have noisy neighbours? Which background processes are running on the new worker that might interfere with the benchmark?

@felixbarny
Copy link
Member

@cachedout do you know why the benchmarks aren't executed on the dedicated bare metal machines anymore?

@kuisathaverat
Copy link
Contributor

Do you think a ci:benchmarks label to tell CI to run benchmarks for PRs would be useful?

I am not a fan of using labels to trigger CI jobs, I preferred it to be intentional using a GitHub comment because these additional jobs usually do not need to run on every commit, and if you do it you will waisting CI time.

cc @v1v

@v1v
Copy link
Member

v1v commented Jul 5, 2022

Let me look at what's going on

@v1v
Copy link
Member

v1v commented Jul 5, 2022

Do you think a ci:benchmarks label to tell CI to run benchmarks for PRs would be useful?

It's not supported,

// disabled by default, not required for merge
booleanParam(name: 'bench_ci', defaultValue: false, description: 'Enable benchmarks')

You can enable it by using something like:

                expression { matchesPrLabel(label: 'ci:benchmarks') }

in

apm-agent-java/Jenkinsfile

Lines 300 to 304 in 32ee207

anyOf {
branch 'main'
expression { return env.GITHUB_COMMENT?.contains('benchmark tests') }
expression { return params.bench_ci }
}

do you know why the benchmarks aren't executed on the dedicated bare metal machines anymore?

It uses metal and, recently there are a bunch of new CI workers for being used by the prodfiler.

Unfortunately, the metal label was added in the CI provisioner, and the CI Jenkinsifle for this project should use something else to be sure it uses the dedicated ones.

What baremetals can you use?

@v1v
Copy link
Member

v1v commented Jul 5, 2022

@eyalkoren , I just added some changes to this PR so:

  • I reverted the change for supporting a new CPU
  • Fixed the agent labels to filter only those workers that were used in the past.
  • Supported ci:benchmarks tag
  • Delete the workspace in the baremetals

Let's see how it goes, I didn't want to change the description of this PR, feel free to do it so 🙇

@eyalkoren eyalkoren changed the title Adjusting benchmarks script to discover new processor type Enforcing correct CI workers for benchmarks Jul 5, 2022
@cachedout
Copy link
Contributor

cachedout commented Jul 5, 2022

It uses metal and, recently there are a bunch of new CI workers for being used by the prodfiler.

raises hand This is my fault. I requested workers for the prodfiler benchmarking project and had them labeled with a new label but missed the fact that they'd also be put in an existing pool. Apologies.

@v1v v1v added the ci:benchmarks Enable the benchmarks label Jul 5, 2022
@jackshirazi jackshirazi merged commit 97b8aa1 into elastic:main Jul 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-java ci:benchmarks Enable the benchmarks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants