| b97d3a9c | 09-Mar-2020 |
Mattias Rönnblom <[email protected]> |
event/dsw: add port busy cycles xstats
DSW keeps an internal port load estimate, used by the load balancing mechanism. As a side effect, it keeps track of the total number of busy cycles since start
event/dsw: add port busy cycles xstats
DSW keeps an internal port load estimate, used by the load balancing mechanism. As a side effect, it keeps track of the total number of busy cycles since startup. This metric is indirectly exposed in the form of DSW xstats' "port_<n>_event_proc_latency", which is the total number of busy cycles divided by the total number of events processed on a particular port.
An external application can take (event_latency * dequeued) to go back to busy_cycles. One reason for doing this is to measure the port's load during a longer time period, without resorting to sampling "port_<n>_load". However, as the number dequeued events grows, a rounding error in event_latency renders the application-calculated busy_cycles inaccurate.
Thus, it makes sense to directly expose the number of busy cycles as a DSW xstats, even though it might seem redundant.
Signed-off-by: Mattias Rönnblom <[email protected]>
show more ...
|
| 65388325 | 09-Mar-2020 |
Mattias Rönnblom <[email protected]> |
event/dsw: remove redundant control ring poll
On dequeue, polling the control ring once is enough.
Fixes: f6257b22e767 ("event/dsw: add load balancing") Cc: [email protected]
Suggested-by: Ola Lilje
event/dsw: remove redundant control ring poll
On dequeue, polling the control ring once is enough.
Fixes: f6257b22e767 ("event/dsw: add load balancing") Cc: [email protected]
Suggested-by: Ola Liljedahl <[email protected]> Signed-off-by: Mattias Rönnblom <[email protected]>
show more ...
|
| 570ac17b | 09-Mar-2020 |
Mattias Rönnblom <[email protected]> |
event/dsw: avoid migration waves in large systems
DSW limits the rate of migrations on a per-port basis. Hence, as the number of cores grows, so does the total migration capacity.
In high core-coun
event/dsw: avoid migration waves in large systems
DSW limits the rate of migrations on a per-port basis. Hence, as the number of cores grows, so does the total migration capacity.
In high core-count systems, this allows for a situation where flows are migrated to a lightly loaded port which recently already received a number of new flows (from other ports). The processing load generated by these new flows may not yet be reflected in the lightly loaded port's load estimate. The result is that the previously lightly loaded port is now overloaded.
This patch adds a rough estimate of the size of the inbound migrations to a particular port, which can be factored into the migration logic, avoiding the above problem.
Signed-off-by: Mattias Rönnblom <[email protected]>
show more ...
|
| 1f2b99e8 | 09-Mar-2020 |
Mattias Rönnblom <[email protected]> |
event/dsw: improve migration mechanism
Allowing moving multiple flows in one migration transaction, to rebalance load more quickly.
Introduce a threshold to avoid migrating flows between ports with
event/dsw: improve migration mechanism
Allowing moving multiple flows in one migration transaction, to rebalance load more quickly.
Introduce a threshold to avoid migrating flows between ports with very similar load.
Simplify logic for selecting which flow to migrate. The aim is now to move flows in such a way that the receiving port is as lightly-loaded as possible (after receiving the flow), while still migrating enough flows from the source port to reduce its load. This is essentially how legacy strategy work as well, but the code is more readable.
Signed-off-by: Mattias Rönnblom <[email protected]>
show more ...
|
| c4cf44b6 | 04-Apr-2020 |
Mattias Rönnblom <[email protected]> |
event/dsw: extend xstats
To allow visualization of migrations, track the number flow immigrations in "port_<N>_immigrations". The "port_<N>_migrations" retains legacy semantics, but is renamed "port
event/dsw: extend xstats
To allow visualization of migrations, track the number flow immigrations in "port_<N>_immigrations". The "port_<N>_migrations" retains legacy semantics, but is renamed "port_<N>_emigrations".
Expose the number of events currently undergoing processing (i.e. pending releases) at a particular port.
Signed-off-by: Mattias Rönnblom <[email protected]>
show more ...
|