numam-dpdk/lib
Mattias Rönnblom 074b4db247 service: reduce average case service core overhead
Optimize service loop so that the starting point is the lowest-indexed
service mapped to the lcore in question, and terminate the loop at the
highest-indexed service.

While the worst case latency remains the same, this patch
significantly reduces the service framework overhead for the average
case. In particular, scenarios where an lcore only runs a single
service, or multiple services which id values are close (e.g., three
services with ids 17, 18 and 22), show significant improvements.

The worse case is a where the lcore two services mapped to it; one
with service id 0 and the other with id 63.

On a service lcore serving a single service, the service loop overhead
is reduced from ~190 core clock cycles to ~46, on an Intel Cascade
Lake generation Xeon. On weakly ordered CPUs, the gain is larger,
since the loop included load-acquire atomic operations.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
2022-10-05 15:44:48 +02:00
..
acl version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bbdev version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bitratestats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bpf eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
cfgfile version: 22.11-rc0 2022-07-21 12:13:48 +02:00
cmdline version: 22.11-rc0 2022-07-21 12:13:48 +02:00
compressdev dev: hide driver object 2022-09-23 16:14:34 +02:00
cryptodev security: hide session structure 2022-10-04 22:37:54 +02:00
distributor eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
dmadev dmadev: support telemetry dump dmadev 2022-10-03 12:03:36 +02:00
eal service: reduce average case service core overhead 2022-10-05 15:44:48 +02:00
efd eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
ethdev ethdev: support telemetry private dump 2022-10-03 12:03:36 +02:00
eventdev eventdev: introduce event cryptodev vector type 2022-10-02 20:33:24 +02:00
fib version: 22.11-rc0 2022-07-21 12:13:48 +02:00
flow_classify lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
gpudev dev: hide driver object 2022-09-23 16:14:34 +02:00
graph eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
gro gro: fix chain index for more than 2 packets 2022-10-05 14:16:37 +02:00
gso version: 22.11-rc0 2022-07-21 12:13:48 +02:00
hash version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ip_frag ip_frag: add IPv4 fragment copy 2022-08-29 16:24:18 +02:00
ipsec security: hide session structure 2022-10-04 22:37:54 +02:00
jobstats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
kni version: 22.11-rc0 2022-07-21 12:13:48 +02:00
kvargs version: 22.11-rc0 2022-07-21 12:13:48 +02:00
latencystats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
lpm version: 22.11-rc0 2022-07-21 12:13:48 +02:00
mbuf mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
member version: 22.11-rc0 2022-07-21 12:13:48 +02:00
mempool mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
meter eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
metrics metrics: return error code on initialization failures 2022-10-03 12:03:36 +02:00
net net: fix build with -Wpedantic 2022-09-29 09:20:12 +02:00
node eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pcapng dev: hide driver object 2022-09-23 16:14:34 +02:00
pci eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pdump eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pipeline cryptodev: rework session framework 2022-10-04 22:04:59 +02:00
port port: prevent unnecessary flush for ring output port 2022-09-22 16:56:58 +02:00
power eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
rawdev rawdev: support telemetry dump rawdev 2022-10-03 12:03:36 +02:00
rcu version: 22.11-rc0 2022-07-21 12:13:48 +02:00
regexdev eal: deprecate RTE_FUNC_PTR_* macros 2022-09-23 16:14:34 +02:00
reorder version: 22.11-rc0 2022-07-21 12:13:48 +02:00
rib version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ring mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
sched eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
security security: hide session structure 2022-10-04 22:37:54 +02:00
stack version: 22.11-rc0 2022-07-21 12:13:48 +02:00
table table: add entry ID for learner tables 2022-09-24 11:35:23 +02:00
telemetry telemetry: make help command more helpful 2022-09-26 13:49:38 +02:00
timer timer: fix stopping all timers 2022-10-05 15:29:54 +02:00
vhost cryptodev: rework session framework 2022-10-04 22:04:59 +02:00
meson.build build: add definitions for use as Meson subproject 2022-06-07 20:49:20 +02:00