You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi @wahern ,
recently I am learning your timeout module and found some problems, such as some slot will be check twice during carry, bit operation has redundancy, so i made some optimization based on your code. hash optimized method is more consistent with the description in your mentioned paper, These are the main changes:
optimize timeout_wheel hash function.
optimize timeout_slot hash function, unify operation for all wheels.
simplify timeout_update function bit manipulation
At the same time, the performance is also improved, in "Time spent expiring timeouts" the new algorithm for the first 400,000 timeout significantly better than the legacy algorithm.
These are nice improvements! However, I ported over your changes to my fork of the library, and it doesn't seem to work as expected: timeouts aren't expiring when they're supposed to.
I haven't investigated yet what is the cause, but in my program, I usually have a timeout of 1000 units, and the library would tell me I'd have to wait in fractions of that value until that expires (e.g. 800, 150, 49, and 1); with these changes, it tells me values way above 1000 (e.g. 3500) before expiring.
hi lpereira,
Thanks for your verification
you might have called this function timeouts_timeout to get the timeout, but it seems returns a longer timeout than the real one. You can call timeouts_check to check if timeouts_timeout return the correct value, otherwise there will be an error print.
This file contains hidden or 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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi @wahern ,
recently I am learning your timeout module and found some problems, such as some slot will be check twice during carry, bit operation has redundancy, so i made some optimization based on your code. hash optimized method is more consistent with the description in your mentioned paper, These are the main changes:
At the same time, the performance is also improved, in "Time spent expiring timeouts" the new algorithm for the first 400,000 timeout significantly better than the legacy algorithm.