Hi Dave, Thanks for the detailed response.
However, from the experiment I did, I see the same packet being processed by two threads. That is why I asked this question. Maybe I made some mistakes, here is what I did: - In *vlib_main_or_worker_loop* function, I print out all pending frames here, as well as the thread_index of them, and the node name. - I start the vpp with 4 worker threads, and set up SNAT according to the progressive tutorial <https://wiki.fd.io/view/VPP/Progressive_VPP_Tutorial>. - I run iperf that go through the SNAT. The printed information shows that, each TCP packet from the inside to the outside of the SNAT will go through the ethernet-input and snat-in2out. But the thread_index at the ethernet-input is 2, while the thread_index at snat-in2out is 1. Is the above expected? Thanks, On Fri, Jul 7, 2017 at 12:22 PM, Dave Barach (dbarach) <dbar...@cisco.com> wrote: > Dear Yuliang, > > > > From a high level: vpp creates N identical graph replicas in a multi-core > configuration. When practicable, we use hardware RSS hashing to ensure that > all packets belonging to a specific flow are processed [in order!] by the > same thread / graph replica. In effect, embarrassing parallelism. > > > > It’s easy enough to hand off packets between threads - see the > “handoff-node” - but we avoid that whenever possible. > > > > Although one could - and I have - divided graph nodes across threads to > create pipelines, that scheme needs significant dynamic tuning to handle a > traffic pattern change. It’s hard to map nodes onto cores so that each > thread in a pipeline uses approximately the same number of clocks/pkt; > critical, since pipelines run at the speed of the slowest stage. > > > > It’s possible to hand off a full frame of packets for less than two > clocks/pkt. Unfortunately, that’s the least significant issue. Handing off > a packet from one core/thread to another guarantees a bunch of memory/cache > subsystem pressure as the system moves packet data and metadata from A to > B. > > > > HTH... Dave > > > > *From:* vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] *On > Behalf Of *Yuliang Li > *Sent:* Friday, July 7, 2017 1:14 PM > *To:* vpp-dev@lists.fd.io > *Subject:* [vpp-dev] set mapping from node to thread > > > > Hi, > > > > Is there a way to set which node should run on which thread? And is there > a command that shows the mapping from nodes to threads? > > > > Thanks, > > -- > > Yuliang Li > > PhD student > > Department of Computer Science > > Yale University > -- Yuliang Li PhD student Department of Computer Science Yale University
_______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev