gatekeeper
gatekeeper copied to clipboard
Change the core to port mapping in GK
In the MICA II paper "Architecting to Achieve a Billion Requests Per Second Throughput on a Single Key-Value Store Server Platform”, one optimization technique they used is to change the core to port mapping to reduce #queues so that it increases the LLC cache hit rate:
-
Choice#1: In the original MICA paper, each server core performs network I/O on all NIC ports in its NUMA domain. Thus, the total number of NIC queues in the system is
NumCores * NumPorts
. -
Choice#2: In the MICA II paper, each server core talks to only one port, and the core to network port ratio is
2:1
. Thus, the total number of NIC queues in the system is2 * NumPorts
.
In our current implementation here and here, we are using the choice#1. Currently, as we are using only one port for test (10Gbps test), so the total number of NIC queues is small, which shouldn’t affect the LLC cache hit rate. To test Gatekeeper on 100+Gpbs environment, this optimization could be critical.
Part of this change may involve creating Route (RT) blocks to take over the processing of the back interface from GK blocks, so GK blocks would not read from back interfaces. RT blocks may even bring a processor cache improvement: since RT blocks do not deal with a flow table, the L1 caches of RT blocks have more room to store the LPM table.