Get rid of permutation table in dynamic Maglev #24
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.
Fixes #18
This change gets rid of the huge permutation table. It turns out that the necessary values can be computed just as fast on the fly: there's no need to retrieve them from memory.
Another modification is that nfqlb (de)activate computes the new lookup table in a temporary array and copies the results to the actual lookup table in shared memory only when the Maglev computation is done: this makes sure that the loadbalancer does not throw away packets while Maglev computation is taking place.
This PR changes only the dynamic Maglev computation: the static Maglev parts (which are used only for reference) still use the old permutation table-based method.
Attached is a graph about the overall speedup achieved in the populate function. The proposed new method creates an equivalent lookup table.
As you see, the new method is faster until we have about 60 targets or so.