Hi all,

Following up after rechecking the raw data and the x86 cross-checks.

The linker-only A/B results are:

- Xeon Platinum 8168 (Skylake-SP): +17.7% application throughput,
  -14.9% cycles/packet, and branch misses down from 8.17 to 3.37/packet.
- Xeon Gold 6248R (Cascade Lake): +0.93% throughput and -0.92%
  cycles/packet; the branch-miss rate stayed at about 0.068%.
- BlueField-3 (Cortex-A78AE): strict A/B/A over six application profiles,
  +4.32% geometric-mean request rate and +8.4% to +11.4% requests/core
  for the two QD1 profiles. JUMP_SLOT relocations fell from 2,167 to 382.

On a Xeon Platinum 8562Y+ (Sapphire Rapids), an existing PMU run of the
ordinary PLT build measured only 0.226 branch miss/packet (0.086%) while the
100 GbE workload was already at about 93.3 Gbit/s. This was not a
-Bsymbolic-functions A/B, so I am not deriving a speedup from it; it is only
evidence that the large Skylake effect is microarchitecture-dependent.

On current master, libvnet is not compiled with hidden visibility, and the
only explicit __clib_export family under src/vnet is the crypto-engine
registration. Ben's proposal is therefore mainly a public-API inventory task,
not just a CMake change. Also, hidden visibility is not exactly equivalent to
the diagnostic: non-exported definitions become direct, but explicitly
exported symbols remain preemptible and internal calls to them may still use
the PLT.

I suggest an RFC that:

1. builds libvnet with hidden visibility and annotates the intended API;
2. starts the export list from undefined references in shipped VPP binaries
   and plugins, then reviews additions needed by supported external plugins;
3. adds a CI check for the dynamic-symbol list and loads all in-tree plugins;
4. repeats the A/B on the actual hidden/export implementation.

If no supported use case relies on interposition, we can then decide whether
exported functions also need non-preemptible internal binding.

Would this be a reasonable starting point for an RFC?

Best,
Jerome
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#27140): https://lists.fd.io/g/vpp-dev/message/27140
Mute This Topic: https://lists.fd.io/mt/120410674/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to