mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
dpif-netdev: Prefetch next packet before miniflow_extract().
It appears that miniflow_extract() in emc_processing() spends a lot of cycles waiting for the packet's data to be read. Prefetching the next packet's data while parsing removes this delay. For a single flow pipeline the throughput improves by ~10%. With a more realistic pipeline the change has a much smaller effect (~0.5% improvement) Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
committed by
Ethan Jackson
parent
9fc789b906
commit
72a5e2b8fc
@@ -3150,6 +3150,11 @@ emc_processing(struct dp_netdev_pmd_thread *pmd, struct dp_packet **packets,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i != cnt - 1) {
|
||||
/* Prefetch next packet data */
|
||||
OVS_PREFETCH(dp_packet_data(packets[i+1]));
|
||||
}
|
||||
|
||||
miniflow_extract(packets[i], &key.mf);
|
||||
key.len = 0; /* Not computed yet. */
|
||||
key.hash = dpif_netdev_packet_get_rss_hash(packets[i], &key.mf);
|
||||
|
Reference in New Issue
Block a user