FDio / govpp

Go toolset for the VPP.
Apache License 2.0
193 stars 82 forks source link

[extras] The gomemif library struggles with high throughput when using interrupt mode. #85

Closed runeerle42 closed 3 weeks ago

runeerle42 commented 1 year ago

When using the interrupt mode from the (example) code this error is returned over the memifErrChan: EpollWait: %!(EXTRA syscall.Errno=interrupted system call) This only happens when the traffic goes up (like 1Gbps), and even then its not very frequent. Still, this causes the StartPolling() to quit, and the channel dies.

As a quick fix I have changed the return to a continue and it seems to work without any issues. In addition my code changed the return nil in the example to only return if if pktLen > 0 is false so the loop keeps processing packets.

Ps. the handleEvent() should probably return the error from the interrupt function like this:return intf.onInterrupt(intf)