-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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>
- Loading branch information
Showing
12 changed files
with
101 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.