sdnfv / openNetVM

A high performance container-based NFV platform from GW and UCR.
http://sdnfv.github.io/onvm/
Other
263 stars 136 forks source link

Shared core functionality for messages #149

Closed dennisafa closed 5 years ago

dennisafa commented 5 years ago

Adds functionality to sleep when no messages are enqueued onto an nf's message ring.

Summary:

This is functionality I implemented as part of the larger mTCP project, in which an NF constantly receives lots of messages. This works exactly the same way as sleeping on an empty packet ring.

Usage: Run the manager with shared CPU enabled.

This PR includes
Resolves issues
Breaking API changes
Internal API changes
Usability improvements
Bug fixes
New functionality X
New NF/onvm_mgr args
Changes to starting NFs
Dependency updates
Web stats updates

Merging notes:

TODO before merging :

Test Plan:

Tested by sending a large influx of messages to an NF running in shared cpu mode. Also tested with multiple NF's on the same core. Checked htop CPU usage to verify proper sleeping when no messages were being sent.

Review:

Review checklist:

onvm commented 5 years ago

In response to PR creation

CI Message

Your results will arrive shortly

onvm commented 5 years ago

In response to PR creation

CI Message

Error: ERROR: Failed to fetch results from nimbnode30

dennisafa commented 5 years ago

@onvm try it now

kevindweb commented 5 years ago

@onvm can we pass this pktgen test?

onvm commented 5 years ago

@onvm can we pass this pktgen test?

CI Message

Your results will arrive shortly

kevindweb commented 5 years ago

Yay to CI! I tested on cloudlab and got 13422053pps for pktgen. 4573120 rx/tx for 2 speed testers together. I'll test the specific message functionality later, but basic performance looks solid

kevindweb commented 5 years ago

@onvm can we show dennis our new features?

onvm commented 5 years ago

@onvm can we show dennis our new features?

CI Message

Your results will arrive shortly

kevindweb commented 5 years ago

@dennisafa pktgen from CI will work if you merge develop into this branch

koolzz commented 5 years ago

@onvm perf?

kevindweb commented 5 years ago

@onvm perf

onvm commented 5 years ago

@onvm perf

CI Message

Your results will arrive shortly

kevindweb commented 5 years ago

@onvm i believe in you

onvm commented 5 years ago

@onvm i believe in you

CI Message

Your results will arrive shortly

dennisafa commented 5 years ago

@onvm how's it goin pktgen

onvm commented 5 years ago

@onvm how's it goin pktgen

CI Message

Your results will arrive shortly

kevindweb commented 5 years ago

@onvm if you fail I'll catch you now!

onvm commented 5 years ago

@onvm if you fail I'll catch you now!

CI Message

Your results will arrive shortly

koolzz commented 5 years ago

@dennisafa just add the https://github.com/sdnfv/openNetVM/pull/151/files changes into this pr

dennisafa commented 5 years ago

@dennisafa just add the https://github.com/sdnfv/openNetVM/pull/151/files changes into this pr

oops. got it.

onvm commented 5 years ago

Testing

CI Message

Your results will arrive shortly

onvm commented 5 years ago

Testing

CI Message

Error: Failed to parse Speed Tester stats

onvm commented 5 years ago

Testing

CI Message

Your results will arrive shortly

dennisafa commented 5 years ago

awesome, im excited CI has mTCP results now. no real performance benefit, just the fact that the semwait call is logically equivalent so having it in both dequeue_messages and dequeue_packets would be extra

On Thu, Jul 25, 2019 at 6:45 PM Kevin Deems notifications@github.com wrote:

@kevindweb approved this pull request.

Let's goooooooo! First successful mTCP CI run. I also have been testing on cloudlab, when I merged develop, and disabled flow table I got 14746136pps Pktgen, and 12895796pps with ft macro enabled, which is normal. Created a 4 speed tester chain with performance of ~17664647 pps tx on all 4, and got almost 52mil pps just running one speed_tester. Also, not a change request, just a question, was there a performance benefit to moving this code out of onvm_nflib_dequeue_packets, or did it just make more logical sense? I ask this because there doesn't seem to be a whole lot changed, except for the condition definition.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sdnfv/openNetVM/pull/149?email_source=notifications&email_token=AH3EIZW6GDMOG5PBQUKBPTTQBIUJ7A5CNFSM4H3KRXKKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB7UOMZY#pullrequestreview-266921575, or mute the thread https://github.com/notifications/unsubscribe-auth/AH3EIZTUNKSZLJL325TGXLTQBIUJ7ANCNFSM4H3KRXKA .