-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ISPN-16076 Convert RadarGun test to Hyperfoil #19
Conversation
I've been running the agent with I also tried disabling C2 and increasing the new generation size. Sometimes, it completes just fine, but sometimes, I still see the 100% CPU spike. There were cases in which just one of the clients showed this behavior. I am looking into the JFR, and I'll try to compare what happened. |
I'll be updating this with our current findings. We'll utilize a |
I'll investigate until we have concrete baseline numbers with this new configuration. I'll keep the base |
test_name: "{{ benchmark.name }}" | ||
arguments: "{{ benchmark.arguments | default('{}')}}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this, cool reuse!
roles/benchmark/tasks/run.yml
Outdated
- local_action: | ||
module: copy | ||
content: "{{ arguments | to_json }}" | ||
dest: "/tmp/arguments.json" | ||
|
||
- name: Load server arguments | ||
ansible.builtin.include_vars: "/tmp/arguments.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this not be done with a loop invoking set_fact dynamically? Set fact can use dynamic variable arguments such as https://github.com/infinispan/infinispan-ansible-benchmark/blob/main/roles/aws_ec2/tasks/flat-map-instances.yml#L15
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hrrrmmm, let me see. The set_fact
would need to accept a JSON variable as input.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You don't need to. It is already in the ansible variable. You don't need the local_action above either. Just do a loop on the arguments variable which should be a dict at this point.
ansible.builtin.set_fact:
"{{ item.key }}" : "{{ item.value }}"
loop: "{{ arguments | dict2items }}"
Can't remember if you need the dict2items, you might not at all
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It almost works, but the set_fact
seems to convert everything to string, which causes issues when parsing the templates.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hrrm, it seems there's an option for that: https://stackoverflow.com/a/62268930/9244031
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the benchmark template can do the cast directly, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw we need to do something to fix it because I also can't pass -e read_ratio=0.8 -e write_ratio=0.2
to ansible-playbook without getting the same error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I change benchmark to be write_ratio | float
and the same with read_ratio in all the places I can pass a command line argument as well, which will also fix the cast issue you had. We should probably do that for any arguments that may be overridden in the benchmark file by the user.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's great. I've updated the benchmark adding a cast to all the numeric parameters.
Added benchmark template that changes dynamically with read-write ratio.
Integrated, thanks @jabolina ! |
This PR is the initial setup for the read-write test in RadarGun. We only need a single template file. We can then split the read/write ratio and create the actual benchmark based on those values. By default, it runs 80% reads and 20% writes.
Pending points:
use_auth
doesn't seem to propagate when running with theall_benchmarks
playbook;load_multiplier
value is still a placeholder until we find the actual limit in the server (https://issues.redhat.com/browse/ISPN-16077).I am creating it as a draft until we have everything round.