summaryrefslogtreecommitdiff
path: root/lib/librte_rcu/rte_rcu_qsbr.c
diff options
context:
space:
mode:
authorNikhil Rao <nikhil.rao@intel.com>2019-09-16 15:31:02 +0530
committerDavid Marchand <david.marchand@redhat.com>2019-10-18 06:09:24 +0200
commite484ccddbe1b41886fef1e445ef2fdfa55086198 (patch)
treefb9a186d3bb66825f7b48cb4c3e6f62e4d1055ef /lib/librte_rcu/rte_rcu_qsbr.c
parentc1077933d45b2bb6b8721746e63f5a125bd2353a (diff)
downloaddpdk-e484ccddbe1b41886fef1e445ef2fdfa55086198.zip
dpdk-e484ccddbe1b41886fef1e445ef2fdfa55086198.tar.gz
dpdk-e484ccddbe1b41886fef1e445ef2fdfa55086198.tar.xz
service: avoid false sharing on core state
For a valid service, the core mask of the service is checked against the current core and the corresponding entry in the active_on_lcore array is set or reset. Upto 8 cores share the same cache line for their service active_on_lcore array entries since each entry is a uint8_t. Some number of these entries also share the cache line with the internal_flags member of struct rte_service_spec_impl, hence this false sharing also makes the service_valid() check expensive. Eliminate false sharing by moving the active_on_lcore array to a per-core data structure. The array is now indexed by service id. Signed-off-by: Nikhil Rao <nikhil.rao@intel.com> Acked-by: Gage Eads <gage.eads@intel.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Diffstat (limited to 'lib/librte_rcu/rte_rcu_qsbr.c')
0 files changed, 0 insertions, 0 deletions