-
Notifications
You must be signed in to change notification settings - Fork 136
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
Pktgen for CI #148
Pktgen for CI #148
Conversation
@onvm you there now? |
CI MessageYour results will arrive shortly |
@koolzz I added information about benchmarks to the README and changed the name of the helper script symlink |
@onvm |
CI MessageYour results will arrive shortly |
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.
Just some small things, mostly everything lgtm
ci/manager.sh
Outdated
# put all files in one temporary folder for one scp | ||
cp -r ./$worker_ip temp | ||
cp -r ./repository temp/ | ||
cp -r ./worker_files/* temp/ |
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 we just copy all of these at once, will look cleaner cp -r ./$worker_ip ./repository temp/ ./worker_files/* temp/
k
ci/worker_files/pktgen-worker.sh
Outdated
|
||
# run pktgen | ||
log "Collecting Pktgen Statistics" | ||
run_pktgen |
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.
run_pktgen doesn't tell us that it also fetches stats, also the function serves little purpose. Lets just extract the function here
client.set_missing_host_key_policy(AutoAddPolicy()) | ||
client.connect(worker_ip, timeout = 30, username=worker_user, pkey = key) | ||
|
||
(stdin, stdout, stderr) = client.exec_command("sudo ~/repository/tools/Pktgen/openNetVM-Scripts/run-pktgen.sh 1", get_pty=True) |
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.
Drop a comment saying get_pty is required so pktgen runs (I remember we had issues with this)
ci/worker_files/worker-config
Outdated
@@ -0,0 +1,8 @@ | |||
WORKER_MODE="0" | |||
PKT_IFACE="p2p1" |
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.
Wait why do you have a different iface for pktgen and for mtcp? I'm pretty sure they can just share one
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 had a hard time configuring the two interfaces separately. When one runs, it's ok, but configuring two interfaces is much easier than checking to see if the server was lying, before each check.
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.
For now maybe we let it slide, but I'm not convinced that this is better. What's the topology you're using(which node is connected where), 2 NICs instead of one doesn't make much sense as it's using more resources
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.
This is a tricky one, on the manager side (nimbnode17 for example) we only need 1 NIC, true, but on the client, we don't have to do anything if we can send Pktgen as one IP, and mTCP as another. This allows us to basically not touch the client server, because it's already configured. Your choice, but this makes it easy to we can run just mTCP, or just Pktgen, without any issues. This makes it faster, but I can definitely work a solution if necessary.
ci/install_pktgen/install-pktgen.sh
Outdated
sudo rm -rf repository | ||
|
||
git clone https://github.com/sdnfv/openNetVM.git repository | ||
check_exit_code "ERROR: Failed installing onvm" |
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.
Failed cloning
ci/install_pktgen/install-pktgen.sh
Outdated
|
||
cd repository | ||
|
||
print_header "Beginning Execution of Workload" |
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.
rm
local idx = 0; | ||
while( idx < waitTime ) do | ||
|
||
-- Write port stats to output file separated by line |
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.
add 2 spaces so comment lines up and remove the newline above
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.
@onvm
Olá
CI Message
Run successful see results:
✔️ PR submitted to develop branch
✔️ Pktgen performance check passed
✔️ Speed Test performance check passed
✔️ Linter passed
[Results from nimbnode17]
-
Median TX pps for Pktgen: 10205705
Performance rating - 102.06% (compared to 10000000 average) -
Median TX pps for Speed Tester: 40185939
Performance rating - 100.46% (compared to 40000000 average)
@onvm did the changes mess things up? |
CI MessageYour results will arrive shortly |
CI MessageError: ERROR: Failed to copy ONVM files to nimbnode17 |
CI MessageYour results will arrive shortly |
@onvm that was my fault |
CI MessageYour results will arrive shortly |
CI MessageError: ERROR: Failed to copy ONVM files to nimbnode17 |
CI MessageYour results will arrive shortly |
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.
Let us see
CI Message
Run successful see results:
✔️ PR submitted to develop branch
✔️ Pktgen performance check passed
✔️ Speed Test performance check passed
✔️ Linter passed
[Results from nimbnode17]
-
Median TX pps for Pktgen: 10448860
Performance rating - 104.49% (compared to 10000000 average) -
Median TX pps for Speed Tester: 40189750
Performance rating - 100.47% (compared to 40000000 average)
@koolzz I will figure out the mTCP side of it in that PR, but as of now, there is only one interface being used, identified by CLIENT_IFACE in the |
@onvm we good? |
CI MessageYour results will arrive shortly |
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.
@onvm we good?
CI Message
Run successful see results:
✔️ PR submitted to develop branch
✔️ Pktgen performance check passed
✔️ Speed Test performance check passed
✔️ Linter passed
[Results from nimbnode17]
-
Median TX pps for Pktgen: 10432160
Performance rating - 104.32% (compared to 10000000 average) -
Median TX pps for Speed Tester: 40192276
Performance rating - 100.48% (compared to 40000000 average)
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.
Great work man, happy to see Pktgen as a reliable CI check
Finally have Pktgen running for our Continuous Integration in the nimbus cluster!
Summary:
Long awaited, and tested recently in another PR, the default run mode is now to run Pktgen for our base performance testing. Right now here's the basic steps, ci sends our worker node to reboot, then fires the worker script. This script, depending on the
worker-config
, runs a certain mode (right now just pktgen or speed_test). If pktgen mode (MODE="0"), then we run a script that calls the PktgenopenNetVM-Scripts/run-pktgen.sh
script in the other node through paramiko'sSSHCLient
. That uses our new lua script that sends packets for 30 seconds. We retrieve the data from basic monitor, send it back to CI for analysis. The new worker script also allows for multiple run modes, (MODE="0 1" for example). This way, we can potentially run pktgen then speed_tester and get all the results back to back after reboot.Usage:
Merging notes:
Please merge Ci busy no more #143 because I merged that code into this one, and all those commits are cluttering up this commit log as you see below (27 commits). There should only be like 3 commits for this PR so far.
TODO before merging :
Test Plan:
We have to figure out how we want to do different modes, from Github comment parsing or something. This way, we can stress test that this works. We should also test that this works on nn30 with nn33 (pktgen) so we know it's scalable to new nodes we want to use.
Review:
@koolzz @dennisafa