Messages in this thread | ![/](/images/icornerl.gif) | | From | Breno Leitao <> | Subject | [PATCH net-next v3 0/4] net: dqs: optimize if stall threshold is not set | Date | Thu, 11 Apr 2024 12:22:28 -0700 |
| |
Here are four patches aimed at enhancing the Dynamic Queue Limit (DQL) subsystem within the networking stack.
The first two commits involve code refactoring, while the third patch introduces the actual change. The fourth patch just improves the cache locality.
Typically, when DQL is enabled, stall information is always populated through dql_queue_stall(). However, this information is only necessary if a stall threshold is set, which is stored in struct dql->stall_thrs.
Although dql_queue_stall() is relatively inexpensive, it is not entirely free due to memory barriers and similar overheads.
To optimize performance, refrain from calling dql_queue_stall() when no stall threshold is set, thus avoiding the processing of unnecessary information.
Changelog:
v3: * Read stall_thrs earlier, at dql_completed(), to avoid any performance penalty, as suggested by Jakub. v2: * Moved the stall_thrs to the very first cache line, as a new patch. Suggested by Eric Dumazet. v1: * https://lore.kernel.org/all/20240404145939.3601097-1-leitao@debian.org/
Breno Leitao (4): net: dql: Avoid calling BUG() when WARN() is enough net: dql: Separate queue function responsibilities net: dql: Optimize stall information population net: dqs: make struct dql more cache efficient
include/linux/dynamic_queue_limits.h | 50 +++++++++++++++++----------- lib/dynamic_queue_limits.c | 13 +++++--- 2 files changed, 39 insertions(+), 24 deletions(-)
-- 2.43.0
| ![\](/images/icornerr.gif) |