Branch: refs/heads/master Home: https://github.com/kronosnet/kronosnet Commit: 1dfc8220a3f090e5ca6f8b922c63ae64e09260d1 https://github.com/kronosnet/kronosnet/commit/1dfc8220a3f090e5ca6f8b922c63ae... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2017-12-18 (Mon, 18 Dec 2017)
Changed paths: M libknet/handle.c M libknet/host.c M libknet/internals.h M libknet/links.c M libknet/logging.c M libknet/tests/Makefile.am M libknet/threads_common.c M libknet/threads_common.h M libknet/threads_dsthandler.c M libknet/threads_pmtud.c M libknet/transport_sctp.c M libknet/transports.c
Log Message: ----------- [PMTUd] fix external API and PMTUd interaction
The problem:
PMTUd can take a long time to release the global read lock, mostly due to the pthread_cond_timedwait required to ack/nack packets from the other hosts. This delay could block any wrlock operation for several seconds if not more.
The solution:
each call to the global pthread_rwlock_wrlock has been changed to a wrapper that will notify the PMTUd to interrupt its operations (and restart) first, then get a global write lock that is queued as soon as PMTUd is going out.
This solution also improves a lot shutdown speed.
How to test:
This is not super simple to test and verify. I used 2 VMs with known MTU of 1500. Start knet_bench on both (normal ping_data -C is more than enough). Once they have established data exchange, change the MTU on one of the nodes to 1600 (or higher). This should guarantee that the PMTUd process will take a very long time to complete. First verify that the PMTUd process takes several seconds. Once the next PMTUd run starts, hit ctrl+c on the node that is executing the PMTUd and the process should exit much faster than before this patch.
Signed-off-by: Fabio M. Di Nitto fdinitto@redhat.com
Commit: f8465e758969e2d4d9b5ed4a486890499419fb09 https://github.com/kronosnet/kronosnet/commit/f8465e758969e2d4d9b5ed4a486890... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2017-12-19 (Tue, 19 Dec 2017)
Changed paths: M libknet/handle.c M libknet/host.c M libknet/internals.h M libknet/links.c M libknet/logging.c M libknet/tests/Makefile.am M libknet/threads_common.c M libknet/threads_common.h M libknet/threads_dsthandler.c M libknet/threads_pmtud.c M libknet/transport_sctp.c M libknet/transports.c
Log Message: ----------- Merge pull request #103 from kronosnet/mtu-lock
[PMTUd] fix external API and PMTUd interaction
Compare: https://github.com/kronosnet/kronosnet/compare/0915310bc3da...f8465e758969