diff options
author | Paolo Abeni <pabeni@redhat.com> | 2018-05-15 04:50:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-16 12:26:25 -0400 |
commit | 32f7b44d0f5661044fcfa84e9ad402ed9d759107 (patch) | |
tree | d2453e21a4187e32c9da74a25bbfee4446e725b5 /scripts/bpf_helpers_doc.py | |
parent | 5a63f77af7d69deb02a92b60d61141fe687997f8 (diff) |
sched: manipulate __QDISC_STATE_RUNNING in qdisc_run_* helpers
Currently NOLOCK qdiscs pay a measurable overhead to atomically
manipulate the __QDISC_STATE_RUNNING. Such bit is flipped twice per
packet in the uncontended scenario with packet rate below the
line rate: on packed dequeue and on the next, failing dequeue attempt.
This changeset moves the bit manipulation into the qdisc_run_{begin,end}
helpers, so that the bit is now flipped only once per packet, with
measurable performance improvement in the uncontended scenario.
This also allows simplifying the qdisc teardown code path - since
qdisc_is_running() is now effective for each qdisc type - and avoid a
possible race between qdisc_run() and dev_deactivate_many(), as now
the some_qdisc_is_busy() can properly detect NOLOCK qdiscs being busy
dequeuing packets.
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'scripts/bpf_helpers_doc.py')
0 files changed, 0 insertions, 0 deletions