Recent AMD EPYC server CPUs provide Smart Data Cache Injection (SDCI). This feature preloads inbound I/O data in the processor cache, eliminating the need to fetch that data from DRAM.
The AMD Solarflare sfc net driver, acceleration technologies, and libraries have been updated to support SDCI. When requested, the Ethernet adapter uses the SDCI feature to write received packets, events, and metadata directly to CPU caches. This results in more efficient delivery, improved memory bandwidth and reduced latency for some use cases.
The exact performance benefit realized depends on the pattern of reads that the application makes. Some factors are:
- Whether the application reads data:
- This is true of nearly all applications.
- However, a minimal microbenchmark which only checks for an event already being polled on is unlikely to see a benefit.
- Where applications read data from:
- Applications should try to only read data from cores on the same Core Complex Die (CCD) that the data is directed to.
- Data is directed to a CCD based on when a VI (including Onload stack) is created.
- Whether an application is reading data quickly enough to avoid it being evicted from cache before being read.