UFT tables should not attempt to delegate eviction score - #1044
UFT tables should not attempt to delegate eviction score#1044FelixMcFelix wants to merge 1 commit into
Conversation
131c480 to
32d7f95
Compare
|
Is the following correct? Before the UFT had a policy of |
Only layers' flow table entries have parents, with the setup we have today. One of the things we do which takes advantage of this is that for a TCP flow, LFT entries will receive a high evictability score -- we do so because one of these parents is an entry in the TCP flow table. If the entry is absent, we know we have a disconnected LFT entry that can be safely removed. If it is present, it will reduce the entry's evictability with a better score. The problem is that this logic was implemented directly on the `Ttl` type, which we use by default. The UFTs then assign a maximum evictability to any TCP flows, forcing them into having LRU eviction because there is no child entry -- that's not the policy we want. (Yet, at least.) This fix moves that behaviour into a newtype and has the LFTs explcitly opt into that behaviour.
32d7f95 to
ba9e52d
Compare
That's correct, strictly speaking, but things are related a bit more confusingly. I guess if we look at one LFT entry and its parents we can make this a bit clearer for a given TCP flow using master's The only child relationships are from L_1 to the UFT/TCP state -- the UFT entries don't have a link to TCP1. When we want to find an eviction score for L_1, we get an initial score of (Note: I think making all UFT entries purely LRU evictable is an interesting thing to look at in future if we want to reduce the table size, but if we're doing that it should be uniform across protocols.) UFT eviction is still indirectly controlled by TCP1 with this fixed to use |
Only layers' flow table entries have parents, with the setup we have
today. One of the things we do which takes advantage of this is that for
a TCP flow, LFT entries will receive a high evictability score -- we do
so because one of these parents is an entry in the TCP flow table. If
the entry is absent, we know we have a disconnected LFT entry that can
be safely removed. If it is present, it will reduce the entry's
evictability with a better score.
The problem is that this logic was implemented directly on the
Ttltype, which we use by default. The UFTs then assign a maximum
evictability to any TCP flows, forcing them into having LRU eviction
because there is no child entry -- that's not the policy we want. (Yet,
at least.)
This fix moves that behaviour into a newtype and has the LFTs explcitly
opt into that behaviour.
Stack created with GitHub Stacks CLI • Give Feedback 💬