On 6/18/20 10:31 AM, Paolo Abeni wrote:
> The sched layer can use several indirect calls per
> packet, with not work-conservative qdisc being
> more affected due to the lack of the BYPASS path.
>
> This change tries to improve the situation using
> the indirect call wrappers infrastructure for the
> qdisc enqueue end dequeue indirect calls.
>
> To cope with non-trivial scenarios, a compile-time know is
> introduced, so that the qdisc used by ICW can be different
> from the default one.
>
> Tested with pktgen over qdisc, with CONFIG_HINT_FQ_CODEL=y:
>
> qdisc threads vanilla patched delta
> nr Kpps Kpps %
> pfifo_fast 1 3300 3700 12
> pfifo_fast 2 3940 4070 3
> fq_codel 1 3840 4110 7
> fq_codel 2 1920 2260 17
> fq 1 2230 2210 -1
> fq 2 1530 1540 1
Hi Paolo
This test is a bit misleading, pktgen has a way to bypass the qdisc.
Real numbers for more typical workloads would be more appealing,
before we consider a quite invasive patch ?
What is the status of static_call infrastructure ?
>
> +#ifndef CODEL_SCOPE
> +#define CODEL_SCOPE static
> +#endif
This looks additional burden, just remove the static attribute,
if a function might be called directly.
Eg, we have EXPORT_SYMBOL() all over the places, even if the modules needing
a symbol might not be compiled at all, or being part of vmlinux.
Thanks !